您可以根据需要生成签名并将其传递到options 字典中。这是一个简单链的工作tasks.py:
from datetime import timedelta
from celery import Celery, signature
app = Celery('tasks', broker='redis://localhost')
app.conf.update(
beat_schedule={'add_divide': {'task': 'tasks.add',
'args': (5, 7),
'schedule': timedelta(seconds=10),
'options': {'queue': 'testq',
'link': signature('tasks.divide',
args=(4, ),
queue='testq'
)
}
}
}
)
@app.task
def add(x, y):
z = x + y
print('sum: {0}'.format(z))
return z
@app.task
def divide(x, y):
z = x / y
print('divide: {0}'.format(z))
return z
运行celery worker -A tasks.celery -Q testq --beat -c1 将输出如下内容:
[2017-04-07 00:00:00,000: WARNING/PoolWorker-2] sum: 12
[2017-04-07 00:00:00,050: WARNING/PoolWorker-2] divide: 3