【发布时间】:2012-11-29 23:24:52
【问题描述】:
问题是:
当我对工作人员执行的代码进行更改时,在我推送新代码后,heroku 上正在运行的工作人员仍会与以前的工作人员一起执行。
然后我必须手动停止并重新启动 resque。但我猜这是错误的,因为工人可能正在执行某些工作,并且必须等到完成才能取消注册。
这是我的 resque.rake
require 'resque'
require "resque/tasks"
task "resque:setup" => :environment do
ENV['QUEUE'] = '*' if ENV['QUEUE'].blank?
Resque::Worker.all.each {|w| w.unregister_worker}
Resque.after_fork do |job|
ActiveRecord::Base.establish_connection
end
end
task "resque:clean_workers" => :environment do
Resque::Worker.all.each {|w| w.unregister_worker}
end
desc "Alias for resque:work (To run workers on Heroku)"
task "jobs:work" => "resque:work"
Dir["#{Rails.root}/app/jobs/*.rb"].each { |file| require file }
我想知道当我将我的应用程序推送到 heroku 时,是否可以使用新代码更新工作人员。怎么可能?
谢谢!!
【问题讨论】:
-
你确定之前的worker还在运行吗?推送后您的 Heroku 日志是什么样的?
heroku ps呢? -
部署后显示“0 of 1 Workers”,但它很脏。它应该让heroku自己做吗?我正在使用
heroku run:detached bundle exec rake resque:work QUEUE=*运行resque。谢谢
标签: ruby-on-rails heroku resque