セロリを珍しい方法で使用しています-セロリの開始時にカスタムプロセスを作成しています.このプロセスは、セロリの実行中は常に実行されている必要があります. Celery ワーカーは、このプロセスをタスクに使用します (詳細は不要です)。
コマンドラインからセロリを実行しましたが、すべて問題ありません。
celery -A celery_jobs.tasks.app worker -B --loglevel=warning
しかし、celeryd
セロリをデーモン化するために使用すると、それを止める方法がありません。コマンドceleryd stop
はセロリを停止しようとしますが、終了しません。
どちらの場合もプロセス ツリーを確認すると、違いがあります。コマンド ラインから実行する場合、親は明らかにセロリ プロセスです (子としてセロリ ワーカーを持つメイン プロセス)。親のセロリ プロセスを強制終了 (停止) すると、すべてのセロリ ワーカーとカスタム プロセスが停止します。
しかし、で実行するとceleryd
、カスタムプロセスに親が/sbin/init
あり、呼び出しceleryd stop
が機能していません。メインのセロリプロセスが何かを待っているか、セロリの子プロセスではないため、カスタムプロセスを停止できないようです。
私はプロセスについてあまり知りませんし、何を検索すればよいのかわからないため、情報を見つけるのは簡単ではありません。そのため、ヒントをいただければ幸いです。