Shp*_*ord 131 ruby-on-rails heroku resque redis ruby-on-rails-3
从附图中可以看出,我有几个工人似乎被卡住了.这些过程不应超过几秒钟.

我不确定为什么他们不会清除或如何手动删除它们.
我在Heroku上使用Resque with Redis-to-Go和HireFire来自动扩展工作人员.
hag*_*ope 213
这些解决方案都不适用于我,我仍然会在redis-web中看到这个:
0 out of 10 Workers Working
Run Code Online (Sandbox Code Playgroud)
最后,这有助于我清除所有工人:
Resque.workers.each {|w| w.unregister_worker}
Run Code Online (Sandbox Code Playgroud)
Sim*_*ton 51
在你的控制台中:
queue_name = "process_numbers"
Resque.redis.del "queue:#{queue_name}"
Run Code Online (Sandbox Code Playgroud)
否则,您可以尝试将它们伪造成删除它们,并使用:
Resque::Worker.working.each {|w| w.done_working}
Run Code Online (Sandbox Code Playgroud)
编辑
很多人一直在赞同这个答案,我觉得人们尝试hagope的解决方案是非常重要的,这个解决方案会将工作人员从队列中取消注册,而上面的代码会删除队列.如果你很高兴假装它们,那就很酷.
Sha*_*edo 28
您可能已安装resque gem,因此您可以打开控制台并获取当前工作人员
Resque.workers
Run Code Online (Sandbox Code Playgroud)
它返回一个工人列表
#=> [#<Worker infusion.local:40194-0:JAVA_DYNAMIC_QUEUES,index_migrator,converter,extractor>]
Run Code Online (Sandbox Code Playgroud)
挑选工人prune_dead_workers,例如第一个工人
Resque.workers.first.prune_dead_workers
Run Code Online (Sandbox Code Playgroud)
ewH*_*ewH 24
除了hagope回答,我希望能够只注销已经运行了一段时间的工作人员.以下代码仅取消注册运行超过300秒(5分钟)的工作人员.
Resque.workers.each {|w| w.unregister_worker if w.processing['run_at'] && Time.now - w.processing['run_at'].to_time > 300}
Run Code Online (Sandbox Code Playgroud)
我正在收集与Resque相关的Rake任务,我还将其添加到:https://gist.github.com/ewherrmann/8809350
jBe*_*eas 10
在运行命令的任何位置运行此命令以启动服务器
$ ps -e -o pid,command | grep [r]esque
Run Code Online (Sandbox Code Playgroud)
你应该看到这样的东西:
92102 resque: Processing ProcessNumbers since 1253142769
Run Code Online (Sandbox Code Playgroud)
记下我的例子中的PID(进程ID)是92102
然后你可以退出2种方法中的过程1.
优雅地使用 QUIT 92102
强行使用 TERM 92102
*我不确定它的语法是什么QUIT 92102或QUIT -92102
如果您有任何问题,请告诉我.
小智 6
我已经做了:
% rails c production
irb(main):001:0>Resque.workers
Run Code Online (Sandbox Code Playgroud)
得到了工人名单.
irb(main):002:0>Resque.remove_worker(Resque.workers[n].id)
Run Code Online (Sandbox Code Playgroud)
...其中n是不需要的工人的零基指数.
| 归档时间: |
|
| 查看次数: |
55238 次 |
| 最近记录: |