3

このような状況では、タスクを実際にスケジュールする必要があり、タスク定義では、実行する必要があるたびに特定の入力パラメーターが必要になります。次のタスク関数について考えてみます。

@task
def add_numbers(a, b):
   sum = a + b
   return sum

ここで、T1-> add_numbers(4,5)とT2-> add_numbers(2,2)などの異なる入力パラメーターを使用して2つの異なる時間インスタンスで上記のタスクを実行する必要がある場合、どうすればよいですか。助けてくれてありがとう。

ENV:Django 1.4、Celery 3.0

4

2 に答える 2

2

私もこの問題に遭遇しました。あなたを助ける別の方法があると思います。@ narced133の答えは、さまざまなパラメーターが制限されている場合にのみ機能します。数千種類のパラメーターがある場合はどうなりますか?

解決策: 関数をパラメーターとして受け入れるようにリファクタリングするcelery taskと、関数は、 : の実際のパラメーターであるパラメーターを生成または取得しcelery taskますadd_numbers

于 2016-06-05T08:11:20.870 に答える
1

指定した間隔で引数を使用してタスクを呼び出す方法の例については、定期的なタスクに関する Celery のドキュメントを参照してください。http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#entries

あなたの例では、次のようなものを使用できます。

from celery.schedules import crontab

CELERYBEAT_SCHEDULE = {
    'T1': {
        'task': 'tasks.add_numbers',
        'schedule': crontab(hour=7, minute=30, day_of_week=1),,
        'args': (4, 5)
    },
    'T2': {
        'task': 'tasks.add_numbers',
        'schedule': crontab(hour=16, minute=0),,
        'args': (2, 2)
    },
}
于 2012-07-12T15:51:04.470 に答える