8

カウントダウン後にセロリタスクを実行する必要がありますが、特定の条件下でそのカウントダウンをリセットできます。たとえば、で呼び出したいのですが、タスクが実行される前に特定のイベントが発生apply_asynccountdown=15た場合は、そのカウントダウンを再び15秒に設定したいと思います。

ドキュメントとグーグルから、タスクIDを保存し、イベントが発生した場合にタスクを取り消して再作成することで、これを達成できると思います。もっとエレガントなアプローチがあるのではないかと思っていました。

4

2 に答える 2

1

カウントダウンを設定する代わりに、このタスクを取り消して新しいタスクを作成することはできませんか?

于 2012-11-25T01:47:04.590 に答える
0

Redis などのキャッシュを使用して、ロック キーを保存します。apply_async を呼び出すと、キーの値がインクリメントされます。このタスクをセロリで実行する場合は、この値を減らします。値が 0 の場合 - タスクを実行します。したがって、apply_async の呼び出しが 2 回あった場合、カウンターは 2 になり、タスクの最初の実行はスキップされます。

このコードが役立つと思います。

于 2015-04-03T10:43:47.203 に答える