Debianサーバーでホストされているdjangoプロジェクトがセロリとセロリビートを使用できるように、最適な「アーキテクチャ」を見つけようとしています。彼は私の要件です:
- セロリ ワーカーとセロリ ビートは、サーバーの再起動後に自動的に実行できるようになります。
- 標準の Debian パッケージを使用することをお勧めします。
- グローバルにインストールする必要がないものは、プロジェクトの virtualenv にインストールする必要があります。
- django プロジェクトの所有者である Linux ユーザーは、プロジェクトを展開するために sudo 権限を必要としません。
これらの要件に基づいて、次の結論に達しました。
- ワーカーとビートのデーモン化には、supervisord を使用するとよいでしょう。Supervisord は標準の debian パッケージに含まれており、この方法でインストールすると、サーバーの再起動後に Supervisord が実行されます (これが、すべてのプロジェクトで virtualenv にローカルにインストールしたくない主な理由です)
- Celeryは、 virtualenvのすべてのプロジェクトに対してローカルにインストールできます。
このような状況下で、新しいプロジェクトを展開するときに、新しい Linux ユーザーを作成し、ルートとして実行している apache virtualhost などをセットアップするときに、supervisord の新しい構成ファイルも追加します。次に、ファブリックを使用してプロジェクトの新しいバージョンをデプロイするとき、プロジェクトユーザーの下でのみ作業します。
このソリューションの唯一の未解決の問題 (私が今まで見つけた) は、セロリ ビートのスケジュール構成が django の設定に記述されているが、リロードされるまでビート デーモンが構成の変更を認識できないことです。ただし、プロジェクト ユーザーはリロードできません。
私の質問は、この問題をどのように解決すべきか、または他のどのアーキテクチャをお勧めしますか? ありがとうございました。