Resque 目前正在向我显示我有一名工人正在排队工作。该工人在队列中间被我关闭(它只是为了测试)并且该工人仍然显示为正在运行。我已经确认进程 ID 已被终止,并且 bluepill 不再监视它。我无论如何都无法在 UI 中找到强制清除它正在工作的内容。
更新当前启动的工作人员的状态的最佳方法是什么(我有 2 个,Web UI 报告 3 个)。
Resque 目前正在向我显示我有一名工人正在排队工作。该工人在队列中间被我关闭(它只是为了测试)并且该工人仍然显示为正在运行。我已经确认进程 ID 已被终止,并且 bluepill 不再监视它。我无论如何都无法在 UI 中找到强制清除它正在工作的内容。
更新当前启动的工作人员的状态的最佳方法是什么(我有 2 个,Web UI 报告 3 个)。
您可能有一个挥之不去的 pid 文件。该文件独立于运行的进程;换句话说,当你杀死进程时,它并没有删除 pid 文件。
如果您使用的是典型的 Rails 和 Resque 设置,Resque 会将 pid 存储在 Rails ./tmp 目录中。
一些 Resque 启动脚本在不同的位置指定 pid 文件,如下所示:
PIDFILE=foo/bar/resque/pid bundle exec rake resque:work
无论脚本将 pid 文件放在哪里,查看那里,然后将其删除,然后重新启动。
同样在命令行上,您可以向 redis 询问正在运行的工作人员:
redis-cli keys *worker:*
如果有您不期望的工作人员,您可以使用以下命令删除它们:
redis-cli del <keyname>
尝试重新启动应用程序。
供将来参考:还可以查看https://github.com/resque/resque/issues/299