我有一个代码库,其中包含多个带有task.py的应用程序,并且总共有100个这些功能
@periodic_task(run_every=crontab(minute='20'))
def sync_calendar_availability_and_prices(listing_id_list=None, reapply_rules_after_sync=False):
它是celery定期任务定义的旧格式,但在celery == 4.1上可以正常工作。
这些通过节拍每隔几个小时或每分钟执行一次,我也通过使用.delay()在代码库中将它们称为即席执行。我希望所有.delay()调用都进入特定的celery队列manual_call_queue
,并且周期性的节拍触发调用使同一功能进入periodic_beat_fired_queue
-这是在某处容易进行的1-2行配置更改在全球范围内可以做到这一点?
我使用Rabbitmq,芹菜,django和django-celery-beat
答案 0 :(得分:0)
要将定期任务发送到特定队列,请发送队列/选项arg。
@periodic_task(run_every=crontab(minute='20'), queue='manual_call_queue', options={'queue': 'periodic_beat_fired_queue'})
def sync_calendar_availability_and_prices(listing_id_list=None, reapply_rules_after_sync=False):
queue='manual_call_queue'
用于通过.delay或.apply_async
options={'queue': 'periodic_beat_fired_queue'}
在芹菜节拍调用任务时使用。