我正在使用delayed_job
来安排发布到Facebook的开放图表的任务,以避免在动作完成后内容没有为Facebook的刮刀做好准备的问题。 (刮刀得到了错误" og:输入"内容,因为它尚未缓存在Facebook的一侧)
据我所知,我已正确设置此工作流程的各个部分。但是,当作业排队时,我可以从服务器日志中看到它已插入delayed_jobs表中。当我在控制台查询delayed_job时,它不存在(实际上不存在,它们总是被删除)。检查delayed_job.log
时,我可以看到作业已被记录为状态RUNNING
,然后再也没有进一步报告,通过检查Facebook,作业似乎没有被执行。以前我收到Facebook的错误,表示操作失败,将作业设置为FAILED
状态。由于情况不再如此,我相信行动本身已得到修复。
服务器日志中的报告也不稳定,因为有时我会看到delayed_job的日志被删除,但有时会在服务器日志中删除而没有跟踪。
我无法确定在哪里进行故障排除或在何处验证操作是否正在执行。以下相关代码,请询问任何有用的附加代码。
方法获得Facebook错误时delayed_job.log输出
Job JobScheduler::FacebookListCreation (id=2) FAILED (7 prior attempts) with NoMethodError: undefined method `list_url'
重新创建修复Facebook错误的方法delayed_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
答案 0 :(得分:0)
我没有得到您的实际问题,但您的错误之一是未定义的方法`list_url&#39; &#34;是因为它属于你的通话类而且延迟工作并不知道。你可以像这样解决它:
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
答案 1 :(得分:0)
我遇到了同样的问题,并意识到我遇到了一个常见问题:https://github.com/collectiveidea/delayed_job/wiki/Common-problems