2016-12-22 1 views
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_notificationsnotification_gen에서 제대로 실행되지만 client_generate_notification 하위 기본 대기열에서 실행됩니다.

@task 데코레이터에서 큐를 구체적으로 지정할 수 있지만 이것이 장고 앱이므로 큐브가 실제로 어디에서 실행되는지 지정해야합니다.

CELERY_ROUTES 옵션을 사용해 보았습니다.하지만 시도했을 때 실행중인 다른 작업의 큐를 덮어 쓰는 것처럼 보였습니다.

가능한 모든 대기열을 CELERY_ROUTES에 정의하는 것이 가장 좋습니다. 그렇지 않으면 둘 다 동일한 대기열에서 실행되도록 내 작업을 설정하는 더 좋은 방법이 있습니까?

+0

'CELERY_ROUTES' 설정을 줄 수 있습니까? – Jinje

답변

0

it 같은 것을 원하십니까?