2011-09-13 14 views
1

私はバックグラウンドで定期的に実行する必要のある特定のタスクを必要とする動的サイトを配備することを考えています。私が出力する必要があるデータは、厳密にそれらのクエリの結果に依存しています。非同期データの取得とキャッシュの処理

ここで問題となるのは、これらのタスクには一定の時間が必要であるということです。 8〜10分:ユーザーがページを尋ねて特定のビューが呼び出され、そのタスクがまだ処理中の場合、すべてが悪くなります。

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

答えて

2

解決策は次のとおりです。ビューはキャッシュされた結果を提供します。タスクが完了すると、キャッシュされた結果が新しいもので更新されます。 キャッシュされたビューがヒットし、再計算する必要があるときにセロリを使用することもできます。セロリのタスクはデタッチされます(ビューはキャッシュされた値を返します)。答えを http://ask.github.com/celery/cookbook/tasks.html

+0

ありがとう:

はここ1・アット・時間セロリのタスクについての興味深い例があります。私はCeleryからキャッシュ結果を更新する方法を調べて、それがちょっとした問題であることを見ました。私はカップル分前にこのsyfou.bitbucket.org/django-groupcacheを見つけました。ここではstackoverflow.com/questions/2268417/...に言及していますが、それはトリックを行うようです。今すぐ試してみるとうまくいきます。私はそれを強調し、セロリの仕事とそれを統合するいくつかのテストの下にすべてのものを置くと思います。 – Nemoverflow

関連する問題