我有一个正在为Django系统开发的可插入应用程序。在其中,我有一个创建看起来像这样的通知的任务:
installable_app.tasks
@app.task(name='tasks.generate_notifications')
def generate_notifications(...):
我有一个正在为Django系统开发的可插入应用程序。在其中,我有一个创建看起来像这样的通知的任务:
installable_app.tasks
@app.task(name='tasks.generate_notifications')
def generate_notifications(...):
clients = get_list_of_clients()
for client in clients:
client_generate_notification.delay(client['name'], client['id'])
return "Notification Generation Complete"
@app.task
def client_generate_notification(client_name, client_id):
...
return result
现在,我希望它可以定期运行,可以使用设置使用芹菜节拍来完成。我也希望它自己的队列:
settings.py:
CELERYBEAT_SCHEDULE ={
{'generate_schedule_notifications': {
'task': 'tasks.generate_notifications',
'schedule': crontab(hour=6, minute=0),
'options': {'queue': 'notification_gen'},
'args': ('schedule', 'Equipment', 'HVAC')},
}
}
第一个任务,generate_notifications
在队列notification_gen
上正确运行,但是client_generate_notification
子任务是在默认队列上运行的。
我知道我可以在@task Decorator中专门指定队列,但是由于这是一个Django应用,我希望它们实际运行的位置。
我已经考虑使用CELERY_ROUTES
选项,但是当我尝试使用时,它似乎覆盖了我正在运行的其他任务的队列。
是定义CELERY_ROUTES
中所有可能队列的最佳实践,还是有更好的方法来设置我的任务,以便它们都可以在同一队列上运行?
您想要类似的东西吗?