2

そのため、呼び出された場所に応じて、同じ Celery タスクを異なる優先度で実行したいという非常に興味深いシナリオがあります。

ドキュメントを使用して、複数のキューを設定し、すべての .delay 呼び出しを .apply_async 呼び出しに変更し、優先キューを指定する追加の routing_key を渡すことで、これを機能させることができました。問題は、これをさまざまな場所で行う必要があることです。これを処理するより良い方法はありますか?ビューのコードをできるだけ変更しないようにしていますが、タスクまたはセロリの構成内でこれを処理することをお勧めします。

4

1 に答える 1

3

個別のタスクを定義する代わりに、部分評価を使用できます。

from celery.task import task
from functools import partial

@task
def do_something():
    pass

premium_do_something = partial(do_something.apply_async, routing_key="premium")

do_something.async_apply()
premium_do_something()
于 2012-05-22T10:53:06.833 に答える