2

現在@sharedtask、次のコードに正確に従う があります: http://docs.celeryproject.org/en/latest/tutorials/task-cookbook.html#id1

そして、次のスケジューラー設定:

CELERYBEAT_SCHEDULE = {
    'indefinite-task': {
        'task': 'app.tasks.indefinite_task',
        'schedule': timedelta(seconds=1),
    },
}

しかし、私の 2 つのワーカーはタスクを複数回実行しているように見えます。これはおそらくワーカーが同時スレッドを持っているためでしょうか? タスクが 1 つのワーカーの 1 つのスレッドによって 1 回だけ実行されるようにするにはどうすればよいですか?

シェルで見ているものの例:

11:00:43 worker.1 | [2015-05-05 15:00:43,444: DEBUG/Worker-1] app.tasks.indefinite_task[b8b0445c-91e6-4652-bd75-4c609149161f]: Acquiring lock
11:00:43 worker.1 | [2015-05-05 15:00:43,444: DEBUG/Worker-2] app.tasks.indefinite_task[b8b0445c-91e6-4652-bd75-4c609149161f]: Acquiring lock

編集:Procfileherokuで使用しています。

4

1 に答える 1

0

おそらく、独自のワーカー プロセスで python スクリプトを実行したいでしょう。

元:

worker: python indefinite_task.py

これにより、そのワーカーに対して 1 つのタスクのみが実行されるようになります。

于 2015-05-05T22:18:21.050 に答える