4

ユーザーが進行状況を観察したい、実行時間の長いタスクに関して、セロリの機能を調査しています。アプリケーションは Django に基づいており、タスクは RPC 経由で開始され、データベースとファイル システム上のファイルの同期が含まれます。

タスク内から、いくつかのレベル (WARN、ERROR、INFO、...) でログオンしたいのですが、ユーザーがログレベルに従ってメッセージをフィルタリングするようにしたいので、データベースへのロギングが実行可能であると思います。

私の質問は次のとおりです。

  • Django アプリケーションが使用しているのと同じデータベースにログインすることをお勧めしますか?
  • Python の標準ロギング モジュールを使用してデータベースにログインするようにセロリを設定するにはどうすればよいですか?
4

1 に答える 1

4

タスクを現在のステータスで更新し、タスク ID を使用してクエリを実行してみませんか。次に、データベースに過負荷をかけるのではなく、構成したバックエンドを透過的に使用します。

Ask は、ここでテクニックを説明します。

YourTaskObject(Task):
    run(self, **kwargs):
        while true:
            # do some work
            self.backend.store_result(self.request.id, result={"percent_done": number}, status="PROGRESS")

次に、AsyncTask の結果を使用します。

result = YourTaskObject.AsyncResult(task_id=task_id)
if not result.ready():
    progress = result.result.percent_done
else:
    ...
于 2012-09-05T21:28:48.823 に答える