我想用Celery定期運行一些函數(任務),比如說每3秒運行一次。定期運行Celery任務(沒有Django)
最近我得到的是隻運行一次任務。
這是我的芹菜配置文件:
# 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.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)
而這正是我的主程序可以運行:
#tasks_runner.py:
from tasks import f1, f2, dbwapp
f1.delay(5, 6)
f2.delay(7, 8)
我使用:python tasks_runner.py
運行我的代碼,但沒有設法使這兩個函數定期運行。這是我得到的輸出:
[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定期運行?