Celeryでは、3秒ごとに定期的にいくつかの機能(タスク)を実行しようとしています。Celeryタスクを定期的に実行する(Djangoなし)
最も近いのは、タスクを1回実行することです。
これは私のセロリの設定ファイルである:
# tasks.py:
import celeryconfig
from celery import Celery
from celery import task
dbwapp = Celery('tasks')
dbwapp.config_from_object(celeryconfig)
@dbwapp.task()
def f1(a, b):
print "F1: {0}, {1}".format(a, b)
@dbwapp.task()
def f2(a, b):
print "F2: {0}, {1}".format(a, b)
そして、私のメインのプログラムを実行する場所これは次のとおりです:私はタスクを宣言する場所です
# celeryconfig.py
from datetime import timedelta
BROKER_URL = 'amqp://[email protected]//'
CELERY_RESULT_BACKEND = 'rpc://'
CELERYBEAT_SCHEDULE = {
'f1-every-3-seconds': {
'task': 'tasks.f1',
'schedule': timedelta(seconds=3),
'args': (1, 2)
},
'f2-every-3-seconds': {
'task': 'tasks.f2',
'schedule': timedelta(seconds=3),
'args': (3, 4)
},
}
#tasks_runner.py:
from tasks import f1, f2, dbwapp
f1.delay(5, 6)
f2.delay(7, 8)
を私はコードをpython tasks_runner.py
で実行しますが、これらの2つの機能を定期的に実行させることはできません。これは私が得る出力です:
[2016-03-31 23:36:16,108: WARNING/Worker-9] F1: 5, 6
[2016-03-31 23:36:16,109: WARNING/Worker-6] F2: 7, 8
私は間違っていますか? f1とf2を定期的に実行するにはどうすればよいですか?ここで説明したように
celery -A proj beat
:代わりにtask_runner.pyを実行しているの