Показаны сообщения с ярлыком celery. Показать все сообщения
Показаны сообщения с ярлыком celery. Показать все сообщения

25 августа 2014 г.

Celery воркер зависает на "mingle: searching for neighbors"

Сегодня ВНЕЗАПНО все Celery воркеры перестали принимать любые задачи, при том что RabbitMQ (используется в качестве брокера) очереди были пустыми, а остальные части системы функционировали нормально. Не помогала ни перезагрузка Celery воркеров, ни перезагрузка RabbitMQ сервера.

После недолгого копания по логам проблема была локализирована, любой Celery воркер как будто зависал на моменте поиска соседей, оставляя в логах что-то такое:

2014-08-25 14:29:12 [INFO:celery.worker.consumer] Connected to amqp://guest:**@127.0.0.1:5672//
2014-08-25 14:29:12 [INFO:celery.worker.consumer] mingle: searching for neighbors

Быстрый гуглинг указал на существующую Celery issue, а уже в ней и нашелся ответ на проблему. Оказывается на корневом разделе подошло к концу место (было доступно порядка 150 Мб) и Celery в связке с RabbitMQ зависала не показывая никаких признаков жизни. Все починилось банальной чисткой корневого раздела, но осадок остался и на себя, что не поставил уведомления о заканчивающемся месте на корневом разделе и на Celery, что она никаким образом не пытается обработать эту ситуацию и проблему приходится вычислять окольными путями.

8 сентября 2011 г.

Запускаем тесты для проекта, который использует Django 1.3 и django-celery

В оффициальной документации django-celery есть раздел о том, как правильно настроить Celery для тестирования с Django проектом, также там упоминается и о возможности использовании специального тест раннера из пакета djcelery.

Так вот, если вы используете Django 1.3 - забудьте про эту возможность до лучших времен. Ее использование черевато DeprecationWarning'ами и не совсем понятной работой (например, у меня --failfast вообще не работал).

Причина кроется в сообщении из подобного DeprecationWarning'a:

/path/to/site-packages/django/test/simple.py:369: DeprecationWarning: The run_tests() test runner has been deprecated in favor of DjangoTestSuiteRunner.
  DeprecationWarning

Т.е., начиная с версии 1.3 мы должны забыть о функциях тест раннерах и использовать только классы тест раннеры. И так как готового класса тест раннера для django-celery еще нет, то нам прийдется руками разместить те настройки, которые устанавливает run_tests перед своим запуском, а именно:

CELERY_ALWAYS_EAGER = True
CELERY_EAGER_PROPAGATES_EXCEPTIONS = True

в test_settings модуль или куда-угодно еще. Ну и не забыть убрать djcelery.contrib.test_runner.run_tests из TEST_RUNNER.