ruby-on-rails - 延迟作业 ActiveRecord::Job Load - 每 5 秒运行一次?

标签 ruby-on-rails activerecord heroku delayed-job

我有一种感觉,这是 Rails 中的疑病症的等价物……但我看了一眼 tail -f logs/development.log,然后被输出催眠了:

  Delayed::Backend::ActiveRecord::Job Load (0.8ms)  UPDATE "delayed_jobs" SET locked_at = '2016-08-26 12:49:09.594888', locked_by = 'host:ghost pid:4564' WHERE id IN (SELECT  "delayed_jobs"."id" FROM "delayed_jobs" WHERE ((run_at <= '2016-08-26 12:49:09.594275' AND (locked_at IS NULL OR locked_at < '2016-08-26 08:49:09.594332') OR locked_by = 'host:ghost pid:4564') AND failed_at IS NULL) ORDER BY priority ASC, run_at ASC LIMIT 1 FOR UPDATE) RETURNING *
  Delayed::Backend::ActiveRecord::Job Load (0.5ms)  UPDATE "delayed_jobs" SET locked_at = '2016-08-26 12:49:14.651262', locked_by = 'host:ghost pid:4564' WHERE id IN (SELECT  "delayed_jobs"."id" FROM "delayed_jobs" WHERE ((run_at <= '2016-08-26 12:49:14.650707' AND (locked_at IS NULL OR locked_at < '2016-08-26 08:49:14.650765') OR locked_by = 'host:ghost pid:4564') AND failed_at IS NULL) ORDER BY priority ASC, run_at ASC LIMIT 1 FOR UPDATE) RETURNING *
  Delayed::Backend::ActiveRecord::Job Load (0.5ms)  UPDATE "delayed_jobs" SET locked_at = '2016-08-26 12:49:19.716179', locked_by = 'host:ghost pid:4564' WHERE id IN (SELECT  "delayed_jobs"."id" FROM "delayed_jobs" WHERE ((run_at <= '2016-08-26 12:49:19.715433' AND (locked_at IS NULL OR locked_at < '2016-08-26 08:49:19.715494') OR locked_by = 'host:ghost pid:4564') AND failed_at IS NULL) ORDER BY priority ASC, run_at ASC LIMIT 1 FOR UPDATE) RETURNING *

这运行...每五秒。所以……呃,那是……正常吗?

我突然想到这是延迟工作必须工作的方式,通过根据时间戳检查工作,所以这只是它在做它的事情,但我没有找到像样的书面证据。

如果是这样......我的第二个问题是这不会在我的 Heroku 实例上烧钱吗?我安装了 workless gem 以试图降低成本 - 但我没有看到任何代码进来关闭它......

错误或功能,我如何不让自己破产?

最佳答案

这确实是延迟工作的工作原理。默认sleep_delay是 5 秒 ( Source Code )。

您可以在初始化程序中配置自定义延迟,如 here 所述.寻找 sleep_delay .

关于ruby-on-rails - 延迟作业 ActiveRecord::Job Load - 每 5 秒运行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39166901/

相关文章:

ssl - Heroku SSL 配置无法读取 server.crt 文件

ruby-on-rails - 如何解决 Rails 模型 namespace 冲突

ruby-on-rails - "Was dirty"ActiveRecord 插件?

ruby-on-rails - 如何在 Rails 中为自定义 SQL 查询创建动态 where 子句?

ruby-on-rails - PostgreSQL 但不是 SQLite 的 ActiveRecord 错误 - GroupingError - 列必须出现在 GROUP BY 子句中或用于聚合函数

database - Heroku Django : Running a Worker

django - Heroku 上的 Celery、RabbitMQ 和 Django : Reaching Memory Limit

ruby-on-rails - 如何在 XML 中查找文本并使用 Nokogiri 显示其同级?

ruby-on-rails - rails : How to send a http get request with UTF-8 encoding

ruby-on-rails - rails : Find records with a certain combination of associated records