0
플러그 형 응용 프로그램이 있습니다. 장고 시스템 용으로 개발하고 있습니다.셀러리 하위 작업 대기열을 정의하는 위치
@app.task(name='tasks.generate_notifications')
def generate_notifications(...):
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
installable_app.tasks : 그것에서는, 정말 같은 형태의 알림을 만들기위한 작업을해야합니다. 나는 또한 그것의 자신의 큐에 할 것을 권장합니다
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 데코레이터에서 큐를 구체적으로 지정할 수 있지만 이것이 장고 앱이므로 큐브가 실제로 어디에서 실행되는지 지정해야합니다.
CELERY_ROUTES
옵션을 사용해 보았습니다.하지만 시도했을 때 실행중인 다른 작업의 큐를 덮어 쓰는 것처럼 보였습니다.
가능한 모든 대기열을 CELERY_ROUTES
에 정의하는 것이 가장 좋습니다. 그렇지 않으면 둘 다 동일한 대기열에서 실행되도록 내 작업을 설정하는 더 좋은 방법이 있습니까?
'CELERY_ROUTES' 설정을 줄 수 있습니까? – Jinje