我有一个延迟的工作,这是调用每当用户发布一首歌,这个工作发送一个活动帖子到用户的Facebook墙。下面是该作业的代码,并在控制器中调用它。
我使用的是Ryan Bates Facebook Open Graph Railscast中看到的'delayed_job_active_record' gem
user.rb
def self.post_song(user_id, song_url)
user = User.find(user_id)
user.facebook.put_connections("me", "virtual_piano:post", song: song_url)
endposts_controller.rb
(upon successful save)
User.delay.post_song(current_user.id, post_url(@post))此作业使用标准rake jobs:work在开发模式下运行。
我见过一些人使用延迟作业的RAILS_ENV=production script/delayed_job start,我如何在生产中调用此方法并使其在后台运行?
非常感谢!
发布于 2012-10-11 00:39:17
delayed_job中的rake jobs:work类似于rails的rails s命令-它在执行该命令的控制台(shell)的主进程中运行。这意味着当包含它的控制台(Shell)停止运行(即您注销)时,它将停止运行。
您将希望运行RAILS_ENV=production script/delayed_job start -这将像rails s -n对rails所做的那样,以守护进程(后台进程)的形式启动delayed_job队列。
发布于 2012-10-11 00:39:41
该脚本执行以下操作:
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize这将在后台运行delayed_job。
如果要在前台运行,可以创建一个简单的脚本,该脚本将具有:
worker = Delayed::Worker.new({}) # or add options
worker.starthttps://stackoverflow.com/questions/12824037
复制相似问题