在我目前的项目中,我正在使用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
答案 0 :(得分:0)
延迟工作不会选择一些工作而不选择其他工作是不可能的。 它将处理所有工作或不处理任何工作。如果它处理任何作业,那么您的配置是正确的。
由于Delayed::Worker.destroy_failed_jobs = false
此配置可能存在问题。如果您的任何作业失败三次,那么它将不会从您的延迟作业表中删除。由于这个原因,你可能会觉得这些工作没有得到处理。
尝试使用puts
调试延迟的作业代码。
你也可以尝试https://github.com/resque/resque-scheduler这将提供观看延迟工作的直观方式。