【问题标题】:Resque: worker status is not rightResque:工人状态不对
【发布时间】:2023-03-11 07:47:01
【问题描述】:

Resque 当前向我显示我有一名工人正在排队工作。那个工人在队列中间被我关闭了(它只是为了测试)并且这个工人仍然显示为正在运行。我已经确认进程 ID 已被终止,并且 bluepill 不再监视它。我无法在 UI 中找到强制清除它正在工作的内容。

更新当前启动的工人数的状态的最佳方法是什么(我有 2 个,Web UI 报告 3 个)。

【问题讨论】:

    标签: ruby-on-rails ruby redis resque


    【解决方案1】:

    您可能有一个挥之不去的 pid 文件。该文件独立于运行的进程;换句话说,当你杀死进程时,它并没有删除 pid 文件。

    如果您使用的是典型的 Rails 和 Resque 设置,Resque 会将 pid 存储在 Rails ./tmp 目录中。

    一些 Resque 启动脚本在不同的位置指定 pid 文件,如下所示:

    PIDFILE=foo/bar/resque/pid bundle exec rake resque:work 
    

    无论脚本把 pid 文件放在哪里,看看那里,然后删除它,然后重新启动。

    同样在命令行,你可以向redis询问正在运行的workers:

    redis-cli keys *worker:*
    

    如果有你不期望的工人,你可以删除他们:

    redis-cli del <keyname>
    

    【讨论】:

      【解决方案2】:

      尝试重新启动应用程序。

      【讨论】:

      • 我重新启动了 resque。这没有做任何事情,因为旧工人仍然列在 redis 中。
      【解决方案3】:

      供将来参考:也可以查看https://github.com/resque/resque/issues/299

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-02
        • 2015-11-08
        • 1970-01-01
        • 2014-01-22
        • 1970-01-01
        • 2012-09-01
        • 1970-01-01
        • 2013-08-27
        相关资源
        最近更新 更多