2013-02-22 76 views
5

我对此很陌生,对于Delayed Job的工作原理有点困惑。延迟作业在Ruby on Rails中如何工作?

我知道它创建一个表,并把作业在表中,然后我需要运行

rake jobs:work 

启动后台进程。现在我的问题是

  1. DJ脚本是否每分钟检查一次表格,当时间与job_at匹配时,它会运行那个工作?

  2. 如果脚本每分钟检查一次表格,它与cron(每当宝石)有什么不同?

感谢

+0

!/我猜是2 /它处理的优先级,重试政策等... – apneadiving 2013-02-22 13:07:48

回答

6
  1. 不DJ脚本检查表中的每一分钟,到时job_at时间相匹配,它运行的工作吗?

当你运行rake jobs:work DelayedJob将轮询delayed_jobs表,执行工作,如果它被设置匹配job_at列值。这部分你是正确的。

  1. 如果脚本只是每分钟检查一次,它与cron(每当gem)有什么不同?

whenever是宝石,可帮助您配置一个crontab。它没有任何东西直接与定期执行您的服务器上的任务。

可能设置一个cron运行在每分钟队列中所有任务存在的,但留下一个delayed_job daemon在运行,有多方面的好处。

  • 即使cron的跑每一分钟,delayed_job的守护进程会看到并执行任何任务队列中的cron之间的1分钟的窗口中运行
  • 每次的cron将运行,它会重建一个新的Rails执行工作的环境。当守护进程可以立即坐在那里准备执行新排队的作业时,这是浪费时间和资源。

如果你想通过cron配置delayed_job每一分钟,你可以添加这样的事情你的crontab

* * * * * RAILS_ENV=production script/delayed_job start --exit-on-complete 

每一分钟,delayed_job的就会旋转起来,执行任何工作都已经准备好了或它必须从先前失败的运行重试,然后退出。 我不推荐这个。将late_job设置为守护进程是正确的选择。

+0

惊人的答案Deefour,谢谢 – iCyborg 2013-02-22 16:45:09

+0

你应该接受的答案,干掉你的问题。 – deefour 2013-02-22 19:24:37

4

不DJ脚本检查表中的每一分钟,到时 job_at时间相匹配,它运行的工作吗?

是的。它每5秒检查一次数据库。

它如何不同于cron(每当宝石)如果脚本只是 每分钟检查一次表格?

在背景工作的背景下,他们没有那么不同。他们的主要区别是他们通常如何经营这些工作。

  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      | 
------------------------------|------------------------------------------ 
+0

令人惊叹的答案jvnill,谢谢 – iCyborg 2013-02-22 16:44:45

相关问题