我是新手,对延迟作业的工作原理有点困惑?
我知道它会创建一个表并将作业放入表中,然后我需要运行
rake jobs:work
启动后台进程。现在我的问题是
DJ 脚本是否每分钟检查一次表格,并且当时间与 job_at 时间匹配时,它会运行该作业?
如果脚本只是每分钟检查一次表,它与 cron (无论何时 gem)有什么不同?
谢谢
我是新手,对延迟作业的工作原理有点困惑?
我知道它会创建一个表并将作业放入表中,然后我需要运行
rake jobs:work
启动后台进程。现在我的问题是
DJ 脚本是否每分钟检查一次表格,并且当时间与 job_at 时间匹配时,它会运行该作业?
如果脚本只是每分钟检查一次表,它与 cron (无论何时 gem)有什么不同?
谢谢
- DJ 脚本是否每分钟检查一次表格,并且当时间与 job_at 时间匹配时,它会运行该作业?
当您运行rake jobs:work
DelayedJob 时,将轮询delayed_jobs
表,执行与job_at
列值匹配的作业(如果已设置)。这部分你是正确的。
- 如果脚本只是每分钟检查一次表,它与 cron (无论何时 gem)有什么不同?
whenever
是一个可以帮助您配置 crontab 的 gem。它与定期在服务器上执行任务没有直接关系。
您可以设置一个 cron 来每分钟运行队列中存在的任何任务,但是让delayed_job
守护程序运行有很多好处。
delayed_job
的守护进程也会看到并执行在 cron 运行之间的 1 分钟窗口内排队的任何作业如果您想delayed_job
每分钟通过一个 cron 进行配置,您可以将类似的内容添加到您的 crontab
* * * * * RAILS_ENV=production script/delayed_job start --exit-on-complete
每分钟,delayed_job 都会启动,执行任何为它准备好的作业,或者它必须从先前失败的运行中重试,然后退出。不过我不推荐这个。将delayed_job 设置为守护进程是正确的方法。
DJ 脚本是否每分钟检查一次表格,并且当时间与 job_at 时间匹配时,它会运行该作业?
是的。它每 5 秒检查一次数据库。
如果脚本只是每分钟检查一次表,它与 cron (无论何时 gem)有什么不同?
在后台作业的上下文中,它们并没有那么不同。他们的主要区别在于他们通常如何运行工作。
DJ | Crontab
uses additional database | you should either set up a rake task
table but that's it. easier | or a runner which can be called on the
to code compared to crontab | crontab
------------------------------|------------------------------------------
requires you to run a worker | requires you to setup your cron which
that will poll the database | you can easily do using the whenever gem
------------------------------|------------------------------------------
since this uses a table, it | you have to setup some sort of logging so
is easier to debug errors | that you have an idea what caused the error
when they happen |
------------------------------|------------------------------------------
the worker should always be | as long as your crontab is set up properly,
running to perform the job | you should have no issues
------------------------------|------------------------------------------
harder to setup recurring | easy to setup recurring tasks
tasks |
------------------------------|------------------------------------------