自社開発のタスクキューシステムをCeleryベースのタスクキューに変換したいのですが、現在持っている機能の1つが苦痛を引き起こしています。
現在、私のタスクキューは非常に粗く動作しています。ジョブ(データを生成して別のサーバーにアップロードする)を実行し、Noseのログキャプチャライブラリのバリアントを使用してログを収集してから、タスクのログを詳細な結果レコードとしてアプリケーションデータベースに保存します。
これを3つのタスクに分けたいと思います。
- データを収集します
- データをアップロードする
- 結果のレポート(前の2つのタスクからのすべてのログを含む)
ここでの本当のキッカーは、ロギングコレクションです。現在、ログキャプチャを使用して、データの生成およびアップロードプロセス中に行われたログ呼び出しごとに一連のログレコードがあります。これらは診断目的で必要です。タスクが同じプロセスで実行されることが保証されていないことを考えると、Celeryタスクキューでこれをどのように実行するかは明確ではありません。
この問題に対する私の理想的な解決策は、先行タスク(1、2)中にすべてのログをキャプチャし、レポータータスク(3)で利用できるようにする、些細で理想的には低侵襲の方法です。
タスク定義をかなり粗くして、このすべての作業を1つのタスクにまとめるのが最善ですか?または、最後に収集するために、既存のキャプチャされたログを渡す方法はありますか?