我已经成功地在Heroku Cedar Stack上运行了Resque,并在Rails上挂载了接口。
当我启动工作程序时,一切都正常。工作者处理工作。但是当我杀死工作者时,Resque仍然认为该工作者可用。当我启动另一个工作者时,它会认为有两个工作者,但实际上只有一个正在运行。
我还从这里http://devcenter.heroku.com/articles/ps注意到,当杀死一个工作者时,Heroku发送SIGTERM信号,如果不能终止,则发送SIGKILL信号。
这是我的工作者日志。
我看到我的进程需要超过10秒才能终止。这是否与在工作任务中加载Rails环境有关?
这是我的rake任务
当我启动工作程序时,一切都正常。工作者处理工作。但是当我杀死工作者时,Resque仍然认为该工作者可用。当我启动另一个工作者时,它会认为有两个工作者,但实际上只有一个正在运行。
我还从这里http://devcenter.heroku.com/articles/ps注意到,当杀死一个工作者时,Heroku发送SIGTERM信号,如果不能终止,则发送SIGKILL信号。
这是我的工作者日志。
2011-08-11T02:32:45+00:00 heroku[worker.1]: Starting process with command `bundle exec rake resque:work QUEUE=*`
2011-08-11T02:32:46+00:00 heroku[worker.1]: State changed from starting to up
2011-08-11T02:33:58+00:00 heroku[worker.1]: State changed from up to stopping
2011-08-11T02:34:00+00:00 heroku[worker.1]: Stopping process with SIGTERM
2011-08-11T02:34:09+00:00 heroku[worker.1]: Error R12 (Exit timeout) -> Process failed to exit within 10 seconds of SIGTERM
2011-08-11T02:34:09+00:00 heroku[worker.1]: Stopping process with SIGKILL
2011-08-11T02:34:11+00:00 heroku[worker.1]: Process exited
我看到我的进程需要超过10秒才能终止。这是否与在工作任务中加载Rails环境有关?
这是我的rake任务
lib/tasks/resque.rake
。require "resque/tasks"
task "resque:setup" => :environment