У меня есть подключаемое приложение, которое я разрабатываю для системы 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, но поскольку это приложение django, я бы предпочел, чтобы они были указаны там, где они фактически запущены.
Я рассмотрел вариант CELERY_ROUTES
, но когда я его попробовал, он, похоже, перезаписал очереди для других задач, которые я запускал.
Лучше всего определить все возможные очереди в CELERY_ROUTES
или есть лучший способ настроить мою задачу так, чтобы они работали в одной очереди?
Можете ли вы дать настройки 'CELERY_ROUTES'? – Jinje