Как я могу обеспечить выполнение задачи Celery с правильными настройками? - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть два сайта, работающие по сути с одной и той же кодовой базой, с небольшими различиями в настройках.Каждый сайт построен в Django, с интегрированным блогом WordPress.

Каждый сайт должен импортировать записи блога из WordPress и сохранять их в базе данных Django.Когда пользователь публикует сообщение, WordPress нажимает URL-адрес веб-крюка на стороне Django, который запускает задачу Celery, которая захватывает версию сообщения JSON и импортирует ее.

Сначала я думал, что каждый сайт может работатьего собственный экземпляр manage.py celeryd, каждый в своем собственном virtualenv, и эти два сайта будут оставаться в стороне друг от друга.Каждый демон демонтируется с помощью отдельного сценария запуска.

Но похоже, что они каким-то образом сталкиваются.Я могу запустить по одному успешно, но если оба запущены, один экземпляр не получит задачи, или задачи будут выполняться с неправильными настройками (в этом случае у каждого есть настройка WORDPRESS_BLOG_URL).

Я использую очередь Redis, если это имеет значение.Что я здесь не так делаю?

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Вы указали имя очереди по умолчанию, которую должен использовать сельдерей?Если вы не установили CELERY_DEFAULT_QUEUE , оба сайта будут использовать одну и ту же очередь и получать сообщения друг друга.Вам нужно установить для этого сайта разные значения, чтобы сообщение было отдельным.

Редактировать

Вы правы, CELERY_DEFAULT_QUEUE только для бэкэндов, таких как RabbitMQ,Я думаю, вам нужно установить разные номера базы данных для каждого сайта, используя разные номера в конце вашего URL брокера .

0 голосов
/ 07 февраля 2012

Если вы используете django-сельдерей, то убедитесь, что у вас нет экземпляров сельдерея, выходящих за пределы ваших virtualenvs.Затем запустите экземпляр сельдерея в ваших virtualenv, используя manage.py celeryd, как вы это сделали.Я рекомендую настроить supervisord , чтобы отслеживать ваши экземпляры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...