起動時にCeleryを自動的に実行することは可能ですか?

起動時にCeleryを自動的に実行することは可能ですか?

私は Django と Celery をベースにした Python サーバーを持っています。コンピューターを再起動するたびに apache2 が起動してサーバーが動作しますが、Celery を手動で再起動する必要があります (プロジェクト ディレクトリに移動して「python manage.py celeryd」を実行します)。本番環境での正しい解決策は何でしょうか。つまり、Celery をデーモンとして起動することは可能でしょうか。

ここhttp://github.com/ask/celery/tree/master/contrib/debian/init.d/apache2 を起動する apache2 スクリプトのように、/etc/init.d/ にあるはずの 2 つのスクリプトを見つけました。しかし、それらを /etc/init.d/ に配置しましたが、何も変化がないようです。

答え1

/etc/rc5.d/ から /etc/init.d スクリプトを手動でシンボリックリンクして、GUI が起動したときに起動するようにすることができます。また、シャットダウン用に別のシンボリックリンクが必要になります。

しかし、Debian にはより高度な (そしてより優れた) 方法があります。これは、個々のランレベルの init スクリプトからリンクされるものを制御します。そのために、これらのスクリプトの上部にあるコメント セクションの "BEGIN INIT INFO" が使用されます。

実際にDebianを使用している場合は、リソースの1つからスクリプトを使用するのではなく、次のものを使用してください。

update-rc.d celerybeat デフォルト
update-rc.d celeryd デフォルト

答え2

Celeryはサンプル構成を出荷しています監督者プロジェクト関連のタスクとデーモンを管理するデーモンです。Debian Unstable にはすでにパッケージ化された supervisor のバージョンが用意されています。インストールする場合は、celery のサンプル設定 (contrib/supervisor にあります) を変更して、/etc/supervisor/conf.d/ にドロップするだけです。

答え3

どのディストリビューションを使用しているかは記載されていません。起動スクリプトはディストリビューションごとにかなり異なるため、これは知っておくことが重要です。Redhat/CentOS を使用している場合は...

理想的には、init.d スクリプトを見つける必要があります。これは、デーモンを安全にシャットダウンしたり、その構成を再読み込みしたり、再起動したりするためにも使用されるため、より良いオプションです。ただし、迅速かつ簡単な解決策が必要な場合は、ファイルpython manage.py celerydの最後に " "を追加するだけです/etc/rc.local

編集: 例のパス名から、Debian を使用していることがわかります。Debian に /etc/rc.local ファイルがあるかどうかはわかりません。ただし、ある場合や、この情報が他の人にとって役立つ場合に備えて、この回答を残しておきます。

関連情報