systemd を使用して再起動すると、Celery Worker は早期に終了します。

systemd を使用して再起動すると、Celery Worker は早期に終了します。

私はsystemdでセロリを使います。私は再起動すると、ほとんどの場合、作業中にワーカーを失うことがわかりました。 celery multiドキュメントによれば、celery multi stopwaitはタスクが完了するのを待たなければならないようです。

再起動すると、次のエラーが発生します。

Process "ForkPoolWorker-10" pid:16902 exited with "signal 15 (SIGTERM)"

celery.conf

[Unit]
Description=Celery background worker
After=network.target

[Service]
Type=forking
User=celery
Group=celery
WorkingDirectory=/src

ExecStart=celery multi start worker -A main.celery -Q celery --logfile=/data/celery.log --loglevel=info --concurrency=10 --pidfile=/var/run/celery/%%n.pid

ExecStop=celery multi stopwait worker --pidfile=/var/run/celery/%%n.pid

[Install]
WantedBy=multi-user.target

また、SIGTERMを送信する前に作業が完了するまで少なくとも90秒待つ必要があるというsystemd文書も読みました。再起動コマンドを実行した後、10秒以内にこのエラーが発生します。

私は何が間違っていましたか?

セロリバージョンの使用:5.2.2(dawn-chorus)

ベストアンサー1

おすすめ記事