延迟工作没有从表中挑选工作

时间:2014-11-06 05:27:59

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

在我目前的项目中,我正在使用Delayed Job gem在后台进行一些处理。它在本地工作正常,但在生产作业中插入延迟作业表,但DJ没有从DJ表中选择少量作业。任何人都可以知道延迟工作将如何从延迟工作表中获取工作。

以下是我项目中的延迟作业代码:

Delayed::Job.enqueue(ProposalJob.new(current_user, @proposal, request.host, params[:proposal][:revision_notes], params[:proposal][:close_date]), :queue => 'publishing')

我的项目中的延迟作业配置:

Delayed::Worker.destroy_failed_jobs = false Delayed::Worker.max_attempts = 3 Delayed::Worker.max_run_time = 1.hours Delayed::Worker.read_ahead = 10

1 个答案:

答案 0 :(得分:0)

延迟工作不会选择一些工作而不选择其他工作是不可能的。 它将处理所有工作或不处理任何工作。如果它处理任何作业,那么您的配置是正确的。

由于Delayed::Worker.destroy_failed_jobs = false此配置可能存在问题。如果您的任何作业失败三次,那么它将不会从您的延迟作业表中删除。由于这个原因,你可能会觉得这些工作没有得到处理。

尝试使用puts调试延迟的作业代码。

你也可以尝试https://github.com/resque/resque-scheduler这将提供观看延迟工作的直观方式。