セロリワーカーを止めるにはどうすればいいですか?

セロリワーカーを止めるにはどうすればいいですか?

私はCeleryをRedis経由で実行しています。ワーカーを次のように起動します。

celery multi start worker1 -A mypackage.tasks.tasks
celery multi v3.1.18 (Cipater)
> Starting nodes...
        > [email protected]: OK

そして私はこれを次のように殺します:

celery multi kill worker1
celery multi v3.1.18 (Cipater)
> [email protected]: DOWN

しかし、ワーカーは実際にはまだ実行中です。ワーカーを再度起動することはできません。

celery multi start worker1 -A mypackage.tasks.tasks
celery multi v3.1.18 (Cipater)
> Starting nodes...
ERROR: Pidfile (worker1.pid) already exists.
Seems we're already running? (pid: 29369)
        > [email protected]: OK

プロセスを強制終了すると、すべて正常になります。

kill 29369

しかし、それは面倒です。PIDを知る必要があります。本当にCelery コマンドライン ツールを使用してワーカーを強制終了しますか?

答え1

コマンドでワーカーを停止する方法はありませんcelery multi。PIDはpidファイルまたはps出力から取得できます。例:

ps auxww | grep '[c]elery worker' | awk '{print $2}' | xargs kill 

または

kill $(cat /path/to/worker.pid)

関連情報