1

特定のタスクをバックグラウンドで定期的に (たとえば 1 時間または 2 時間ごとに) 実行する必要がある動的サイトの展開を計画しています。出力する必要があるデータは、これらのクエリの結果に厳密に依存しています。

問題は、これらのタスクには一定の時間がかかることです (例: 8 ~ 10 分)。したがって、ユーザーがページを要求すると、特定のビューが呼び出され、そのタスクがまだ処理中である場合、すべてがうまくいきません。

では、ここで質問です。その問題を処理するには、何を実装する必要がありますか? 私は検索してセロリについて見つけましたが、上記の問題を修正するためにどのように使用できるか理解できず、タスクがまだ終了していないときに介入するキャッシュシステムを実装する可能性があります.

4

1 に答える 1

2

解決策は次のとおりです。ビューはキャッシュされた結果を提供します。タスクが完了すると、このビューはキャッシュされた結果を新しい結果で更新します。ここでは、この方法でセロリを使用することもできます。キャッシュされたビューがヒットし、再計算する必要がある場合、セロリタスクは切り離されます(ビューはキャッシュされた値を返します)。

ここに、一度に1つのセロリタスクに関する興味深い例があります:http: //ask.github.com/celery/cookbook/tasks.html

于 2011-09-13T06:49:20.423 に答える