2016-04-22 48 views
0

私のdjangoセロリアプリケーションに問題があります。トランザクションとアカウントの2つの関連するモデルがあるとしましょう。私は私のAPI上でトランザクションをプッシュしています。私が達成したいのは、指定されたアカウントの残高を計算することです。Djangoセロリのタイマー付きアプリケーション

私はバランスを計算するセロリのタスクを持っています。問題は、各アカウントごとにタイマーが必要であることです。 60秒。同じアカウントのトランザクションが来ると、タイマーは再び60に設定されます。同じようなことを何度もやりたいと思っていないので、私はこのようにしたいと思っています。指定されたアカウントのトランザクションが60秒間来ない場合は、タスクを実行する必要があります。

どのようなアーキテクチャ上の提案ですか?実際、私はこれらの "タイマー"をどのように設定するか分かりません。

ありがとうございました!

答えて

0

django-celery-transactionsに従うことができます。実行ロジックをカスタマイズするためにはsubclass the Task classです。

apply_asyncをカスタマイズして、次の60秒間に実行するタスクがあるかどうかを確認する必要があります(これにはCelery API for inspecting workersが使用されます)。スケジュールされたタスクがすでに存在する場合は、現在のタスクの実行を無視できます。そうでない場合は、将来実行時間を60秒に設定して、super().apply_async(...)メソッドを呼び出してください。

関連する問題