如何加快 Rails DelayedJobs 的启动时间?

How can I speed up my Rails DelayedJobs time to start?

我正在使用 Rails / 延迟作业,在 Heroku 上使用 Rails 4.1。我注意到我的工作需要 1 秒到 10 秒才能真正开始。一旦他们开始,他们 运行 相当快。

我怎样才能加快速度?

我打电话给他们 my_thing.delay.run!

我确实还有一些其他正在进行的工作,但数量不多,所以这似乎不是原因。它检查 运行 个工作的频率似乎有点滞后。

我想你想配置延迟作业 README 中暗示的 Delayed::Worker.sleep_delay。如果延迟的工作找不到工作,那么它会在再次寻找之前睡这么多秒。默认睡眠时间为 5 秒。

因此,您可以将 config/initializers/delayed_job.rb 中的以下内容设置为在查询待处理作业之间仅休眠 2 秒。

Delayed::Worker.sleep_delay = 2

显然,权衡是在没有任何事情发生时更频繁地轮询作业。

此外,如果您不喜欢延迟工作,那么您可能会发现 resque or particularly sidekiq 可能比延迟工作更快地处理您的工作。