在哪里定义芹菜子任务队列



我有一个正在为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中所有可能队列的最佳实践,还是有更好的方法来设置我的任务,以便它们都可以在同一队列上运行?

您想要类似的东西吗?

相关内容

  • 没有找到相关文章

最新更新