我对此很陌生,对延迟工作的工作原理不太困惑?
我知道它会创建一个表并将作业放入表中,然后我需要运行
rake jobs:work
启动后台进程。现在我的问题是
DJ 脚本是否每分钟检查一次表,当时间与 job_at 时间匹配时,它会运行该作业?
如果脚本只是每分钟检查一次表,那么它与 cron (每当 gem 时)有何不同?
Thanks
- DJ 脚本是否每分钟检查一次表,当时间与 job_at 时间匹配时,它会运行该作业?
当你跑步时rake jobs:work
DelayedJob 将轮询delayed_jobs
表,执行匹配的作业job_at
列值(如果已设置)。这部分你是正确的。
- 如果脚本只是每分钟检查一次表,那么它与 cron (每当 gem 时)有何不同?
whenever
是一个可以帮助你配置 crontab 的 gem。它什么都没有directly定期在服务器上执行任务。
You could设置一个 cron 来每分钟运行队列中存在的任何任务,但留下一个delayed_job
守护进程运行有多种好处。
- 即使 cron 每分钟运行一次,
delayed_job
的守护进程将查看并执行 cron 运行之间的 1 分钟窗口内排队的所有作业
- 每次 cron 运行时,它都会重建一个新的 Rails 环境来执行作业。当守护进程可以立即坐在那里准备执行新排队的作业时,这是浪费时间和资源。
如果你想配置delayed_job
每分钟通过一个 cron 你可以将这样的东西添加到你的 crontab 中
* * * * * RAILS_ENV=production script/delayed_job start --exit-on-complete
每分钟,delayed_job 都会启动,执行任何准备好的作业或必须从之前失败的运行中重试的作业,然后退出。不过我不推荐这个。将delayed_job 设置为守护进程是正确的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)