Django ve Kereviz kullanıyorum ve birden çok sıraya yönlendirmeyi kurmaya çalışıyorum. Bir görevin routing_key
ve exchange
(görev dekoratöründe veya apply_async()
'u kullanarak) belirttiğimde, görev aracıya eklenmez (Kombu, MySQL veritabanıma bağlanır).Django & Kereviz - Yönlendirme sorunları
Görev dekolayısındaki sıra adını belirtirseniz (bu, yönlendirme anahtarının yok sayılacağı anlamına gelir), görev düzgün çalışır. Yönlendirme/değişim kurulumuyla ilgili bir sorun gibi görünüyor.
Sorun ne olabilir?
:INSTALLED_APPS = (
...
'kombu.transport.django',
'djcelery',
)
BROKER_BACKEND = 'django'
CELERY_DEFAULT_QUEUE = 'default'
CELERY_DEFAULT_EXCHANGE = "tasks"
CELERY_DEFAULT_EXCHANGE_TYPE = "topic"
CELERY_DEFAULT_ROUTING_KEY = "task.default"
CELERY_QUEUES = {
'default': {
'binding_key':'task.#',
},
'i_tasks': {
'binding_key':'important_task.#',
},
}
tasks.py
from celery.task import task
@task(routing_key='important_task.update')
def my_important_task():
try:
...
except Exception as exc:
my_important_task.retry(exc=exc)
görev başlatın
settings.py: Burada
düzmece Sen bildirimleri yalnızca bellekte saklanır anlamına gelen bir simsar olarak Django ORM kullanan
? Async_apply ile? – mher
'apply_async() 'için kısayol olan' delay() 'yöntemini kullanıyorum. 'Routing_key' belirtimini, çağrıldığında yerine görev yöntemiyle (dekoratör aracılığıyla) tutmaya çalışıyorum. Ben bunun yerine apply_async() 'yi kullanarak anahtarı geçmeyi denedim ama aynı problemi alıyorum. –
Gecikme, routing_key anahtar kelimesini kabul etmiyor. Apply_async'in basitleştirilmiş bir sürümüdür, ancak aynı değildir. – mher