2013-12-10 5 views
0

Я работаю над проектом, который использует Celery beat для планирования задач. На местном уровне я использую RabbitMQ в качестве брокера, и все работает нормально.Невозможно заставить работника сельдерея работать

Когда я перенаправил свой проект на удаленный сервер, я сменил брокера на Redis.

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

Я предполагал, что с Редисом может быть что-то странное. Однако, похоже, это не так. Я сделал свою работу над проектом с Redis на местном уровне. На сервере, когда я сменил брокера на RabbitMQ, даже тогда у меня была такая же проблема.

Моя местная машина работает Mac OS и сервер работает Debian 6.

Что может быть проблема? Как я могу отладить эту ситуацию и просто заставить работника потреблять задания и выполнять работу? Я использую Python 2.7.

+0

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

ответ

0

Я выяснил проблему, и она оказалась действительно глупой, а показывает, что я делал плохую практику.

Я использовал Gevent для измерения разницы в производительности на сервере и того, как я нерест. Работники сельдерей были неправильным способом справиться с кодом Gevent. Не то, чтобы я не знал, что сельдерейу нужен флаг в аргументе командной строки для Gevent, но не для него используется тот же код на локальной машине. Мне никогда не приходило в голову, что я использую Gevent, и это вызывает проблему.

Все разрешено после почти 20 часов отладки, поиска в Интернете и общения в IRC.