Имам приложение django, което се опитва да извика celery задача, която в крайна сметка ще бъде изпълнена на някои отдалечени хостове. Кодовата база на задачите е напълно отделна от проекта 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
. Няма индикация в celery broker, че е направен опит за свързване - предполагам, че не вижда конфигурацията BROKER_URL
и се опитва да се свърже с localhost.
Как да накарам това да работи? Каква допълнителна конфигурация се нуждае от send_task
, за да знае къде е брокерът?