2

Noseを使用して特定のディレクトリで一連のテストを検出して実行するFlaskアプリケーションがあります。テストの実行には時間がかかるので、状況が発生したときに進行状況をユーザーに報告したいと思います。

Celeryを使用してテストを実行するタスクを作成し、すぐに戻って結果ページの表示を開始できるようにします。次に、結果のレポートを開始する必要があります。テストでは、「ステップNを完了しました」というメッセージをキューに入れることができると考えています。

Celeryには、書き込むキューを決定するために使用できるタスクコンテキストがあることは知っていますが、テストはタスクの一部ではなく、タスクから呼び出される関数です。また、テスト実行がタスクに移動されるとそのコンテキストが失われるため、フラスコセッションを使用できません。

テストジェネレータやnose-testconfigなど、データ駆動型のnoseテストを実行する方法をいくつか見てきましたが、メッセージキュー名が動的であり、同じテストを実行するスレッドが複数ある可能性があるという要件を満たしていません。

だから、私の質問は次のとおりです。 特定のセロリタスクに対応していることをテストに伝えるにはどうすればよいですか。つまり、テストを開始したタスクで、正しいメッセージキューにステータスを報告できますか。

4

0 に答える 0