私は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)