workerman/redis-queue 进程会自动退出,这个队列的退出机制是怎么样的

十万个bug

截图

截图是我的webman运行日志。使用了workerman/redis-queue,想问下大佬们 这个pid:1683 worker[plugin.webman.redis-queue.redis_consumer_shot:2073678] exit 是什么机制导致的退出的。运行时间过长吗,还是说运行了reload命令?如果是运行了reload命令,12-02日以前没有退出

102 1 2
1个回答

运行reload 命令后进程如果超过2秒还没退出(可能在执行比较慢的业务),会被主进程强行 kill -9,
就有 exit with status 9 的日志。这个时间可以通过 config/server.php 里的 stop_timeout设置,
默认2秒。你可以根据你的情况调整它,需啊哟restart重启生效。

  • 十万个bug 1天前

    老大 我想在更新了代码之后 不让队列重启应该怎么设置呢,因为我的队列任务可能执行的时间最长会超过五分钟,如果设置stop_timeout的时长的话 设置多久合适呢

  • 十万个bug 1天前

    假设我的队列一个任务的时间执行时长最长为五分钟,stop_timeout 是否设置大于300秒久能规避这个问题

  • walkor 1天前

    最大的任务执行多久就设置多久,最长5分钟就设置5分钟。
    不想让队列自动reload 设置 config/plugin/webman/redis-queue/process.php 里的reloadable为false

    return [
        'consumer'  => [
            'handler'     => Webman\RedisQueue\Process\Consumer::class,
            'count'       => 8, 
            'reloadable' => false, // <==== 这里
            'constructor' => [
                // 消费者类目录
                'consumer_dir' => app_path() . '/queue/redis'
            ]
        ]
    ];

    这种情况执行reload不会自动更新,需要restart才能更新队列业务逻辑。

  • 十万个bug 1天前

    好的 谢谢大佬

🔝