私はプラグイン可能なアプリケーションを持っています。私はDjangoシステム用に開発中です。私はDjangoのシステムのために開発していますプラグイン可能なアプリを持っているCeleryサブタスクキューを定義する場所
@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デコレータでキューを指定することはできますが、これはdjangoアプリケーションなので、実際にどこで実行されるかは指定したいと思います。
私はCELERY_ROUTES
オプションを使用してみましたが、試してみると、実行中の他のタスクのキューが上書きされているようです。
可能なすべてのキューをCELERY_ROUTES
に定義するのがベストプラクティスですか。どちらのキューも同じキューで実行されるようにタスクを設定する方が良いでしょうか?
あなたは 'CELERY_ROUTES'設定を与えることができますか? – Jinje