![](/img/trans.png)
[英]How does one use delayed_job to make an Rails 3.0 ActionMailer run asynchronously? Encountering ArgumentErrors
[英]Is it possible to run a delayed job immediately but still asynchronously?
我们使用DelayedJob在后台运行任务,因为它们可能需要一段时间,也因为如果抛出错误,我们仍然希望 Web 请求成功。
问题是,有时工作可能非常大(更改数百或数千个数据库行),有时可能非常小(如 5 db 行)。 对于较小的情况,我们仍然希望将其作为延迟作业运行,以便错误处理可以以相同的方式工作,但我们希望不必等待大约 5 秒钟让 DJ 接听工作。
有没有办法将作业排队以便它在后台运行,然后立即运行它,这样我们就不必等待工作人员在 5 秒后执行?
编辑:是的,这是 Ruby on Rails :-)
延迟作业以设定的时间间隔轮询数据库以获取新的 dj 记录。 您可以在初始化程序中重新配置此间隔:
# config/delayed_job.rb
Delayed::Worker.sleep_delay = 2 # or 1 if you're feeling wild.
这将在全球范围内影响 DJ。
怎么样
SomeJob.set(
wait: 0,
queue: "queue_name",
).perform_later
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.