繁体   English   中英

Rails delay_job-延迟的作业从表中删除,处于运行状态,但从未完成/执行

[英]Rails delayed_job - delayed job is deleted from table, in status running, but never finishes/executes

我正在使用delayed_job来安排任务,这些任务将发布到Facebook的开放图上,以在操作完成后立即解决内容尚未准备好供Facebook抓取工具使用的问题。 (抓取者获得了错误的“ og:type”内容,因为它尚未缓存在Facebook上)

据我所知,我已经正确设置了此工作流程的各个部分。 但是,当作业排队时,我可以从服务器日志中看到它已插入delay_jobs表中。 当我在控制台上查询那个delay_job时,它不存在(实际上不存在,它们总是被删除)。 当检查delayed_job.log我可以看到该作业被记录为RUNNING状态,然后再也没有报告,通过检查Facebook,该作业似乎还没有执行。 以前,我收到来自Facebook的错误,指示操作失败,该操作将作业设置为FAILED状态。 既然情况不再如此,我相信动作本身已得到解决。

服务器日志中的报告也是不稳定的,因为有时我可以看到delay_job的日志已删除,但是有时在服务器日志中没有跟踪的情况下删除了该日志。

我不知道该在何处进行故障排除或在何处验证该操作是否应按预期方式执行。 以下相关代码,请询问是否有其他帮助。

方法获取Facebook错误时的delayed_job.log输出

Job JobScheduler::FacebookListCreation (id=2) FAILED (7 prior attempts) with NoMethodError: undefined method `list_url'

重新创建解决Facebook错误的方法后的delay_job.log输出

Job JobScheduler::PublishFBListCreation (id=15) RUNNING

从呼叫控制器

if current_user.facebook_id && current_user.facebook_access_token
  Delayed::Job.enqueue JobScheduler::PublishFBListCreation.new(list_url(@list), current_user.facebook_access_token), 0, 1.minutes.from_now
end

job_scheduler.rb

class PublishFBListCreation < Struct.new(:full_list_url, :facebook_access_token)
  def perform
    @app = FbGraph::Application.new(ENV['FACEBOOK_APP_ID'], :secret => ENV['FACEBOOK_APP_SECRET'])
    @fb_user = FbGraph::User.me(facebook_access_token)

    action = @fb_user.og_action!(
           @app.og_action(:create), :list => full_list_url)
    end
  end

我没有得到您的实际问题,但是您的错误“ 未定义的方法`list_url' “之一是因为它属于您的调用类,并且延迟的工作对此一无所知。 您可以这样解决:

if current_user.facebook_id && current_user.facebook_access_token
  url = list_url(@list)
  access_token = current_user.facebook_access_token
  Delayed::Job.enqueue JobScheduler::PublishFBListCreation.new(url, access_token), 0, 1.minutes.from_now
end

我遇到了同样的问题,并意识到我遇到了以下常见问题之一: https : //github.com/collectiveidea/delayed_job/wiki/Common-problems

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM