循环中运行延迟的作业

时间:2015-06-14 09:09:47

标签: ruby-on-rails ruby sleep delayed-job

我正在尝试延迟功能。延迟将在循环中开始:

try

如果循环运行两次,这会混淆数据吗?有什么方法可以纠正吗?我们也可以在一次循环后做任何睡眠吗?

1 个答案:

答案 0 :(得分:1)

延迟作业在后台运行一个轮询守护程序,定期轮询作业表以获取新作业。

如果您只运行一名DJ工作人员,则所有延迟任务将按顺序处理,并且不存在竞争条件的可能性。

如果您运行多个工作人员,那么您需要考虑竞争条件并防止“混合数据”(我认为这是“混淆数据”的意思)。

所以是的,如果你经营多个DJ工作人员,那么运行多个延迟的工作有可能“混合数据”。

请参阅此处以获取更详细的解释:
http://ternarylabs.com/2012/04/16/handle-job-queue-workers-concurrency-in-rails/

启动作业时休眠对作业队列发生的情况几乎没有影响。一般来说,你不想睡觉,因为它除了延迟你的Rails应用程序的用户界面之外什么都不做。