2

Celery をタスク キューとして使用する Django アプリで奇妙な問題が発生しています。

  1. 私はタスクを開始します。
  2. 実行中、タスクは update_state(...) を呼び出して、進行状況を示すようにタスクの状態を設定します。
  3. タスクが完了します。これをログで確認します。

ただし、このビュー (http://myapp/tasks/37d9a3ac-5bd2-4791-9729-2234ff3be762/status) は、タスクが完了してからかなりの時間、STALE の結果を返します。Redis とデータベースの両方をバックエンドとして使用して、これを再現できます。最終的にタスクの状態は正しく返されますが、ユーザーが何かを実行できるようになる前にタスクが完了したかどうかを UI がポーリングするため、アプリが実際に機能しなくなります。

編集: 私のアプリは Heroku にデプロイされています。Cedar は応答キャッシュを行うのだろうか??

何が起こっているのか分かりますか?

4

1 に答える 1

1

これは Celery とは無関係であることが判明しました。task/{id}/status への AJAX クエリがブラウザによってキャッシュされていたために発生していました。応答をキャッシュしないように jQuery に指示すると、うまくいきました。

于 2012-01-14T18:23:18.187 に答える