У меня есть приложение django, которое пытается вызвать задачу сельдерея, которая в конечном итоге будет выполняться на некоторых удаленных хостах. Кодовая база задачи полностью отделена от проекта django, поэтому я использую celery.execute.send_task
и вызываю ее из сигнала модели post_delete
. Код выглядит примерно так:
class MyModel(models.Model):
@staticmethod
def do_async_thing(sender, instance, **kwargs):
celery.execute.send_task("tasks.do_my_thing", args=[instance.name])
signals.post_delete.connect(MyModel.do_async_thing, sender=MyModel)
Я использую последнюю версию Django (1.6.1) и celery 3.1.7, поэтому я понимаю, что мне не нужен дополнительный модуль или приложение в моем проекте django, чтобы он мог общаться с celery. Я установил BROKER_URL
внутри своего settings.py
как правильный URL-адрес amqp://user:password@host/vhost
.
Когда этот метод срабатывает, я получаю ошибку Connection Refused
. На брокере сельдерея нет указаний на то, что была предпринята попытка подключения - я думаю, он не видит конфигурацию BROKER_URL
и пытается подключиться к локальному хосту.
Как мне заставить это работать? Какая дополнительная конфигурация нужна send_task
, чтобы знать, где находится брокер?