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

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

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

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

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

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

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

您还可以尝试https://github.com/resque/resque-scheduler,这将提供观看延迟作业的直观方式。