我在这里已经阅读过多少个问题,但到目前为止还没有人帮助我。
Scenerio:我使用按钮点击启动rake任务,它也启动了rake任务,但问题是它没有激活worker。
以下是我点击按钮的代码:
def run_rake_jobs
Resque.enqueue(ImportJobs)
puts Resque.info, "**************************************************"
flash[:notice] = "Importing Jobs Now"
redirect_to :back
end
任务代码:
module Refinery
module Titans
class ImportJobs
@queue = :import_jobs
def self.perform
system "rake st:import_jobs"
end
end
end
end
我如何开始工作?我已经尝试了所有可能的技巧,但对我没有用。
答案 0 :(得分:0)
run_rake_jobs
中的代码仅将ImportJobs
后台作业列入redis队列,但不会触发执行。控制器中的代码不会中断。
要实际运行排队的作业,您需要调用单独的命令(通常在rails代码之外),例如rake resque:work
,有关详细信息,请参阅resque readme。
这种用于运行后台作业的模式是典型的:在您的Rails代码中,您只将应该在后台运行的作业排入队列。然后,有一个单独的进程从队列中提取后台作业并使用一个或多个工作程序运行它们。这样,您就可以将长期运行的任务与主Rails代码分离。