2012-10-15 3 views
50

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

ответ

66

Вы пробовали запустить задание из оболочки Django? Вы можете использовать метод задачи .apply, чтобы обеспечить его работу с нетерпением и локально.

Предполагая, что задача называется my_task в Django приложение myapp в tasks субмодуля:

$ python manage.py shell 
>>> from myapp.tasks import my_task 
>>> eager_result = my_task.apply() 

Экземпляр результат имеет тот же интерфейс, что и обычная AsyncResult типа, за исключением того, что результат всегда оценивается с готовностью и на местном уровне и метод .apply() будет блокироваться до завершения задачи.

+0

Как я могу сделать то же самое для проекта пирамиды? Структура каталога будет как: /MyProject => celeryconfig.py, setup.py, development.py, /просмотров/celerytasks => mycelerytask.py .Теперь здесь я хочу запустить «mycelerytask. py '(которая является периодической задачей) вручную из командной строки. Вы можете помочь? – Workonphp

+0

@Workonphp Я не знаком с Pyramid, к сожалению, поэтому я не знаю, как Celery интегрируется с Pyramid вообще. (Обратите внимание, что мое решение выше Django-specific, требующее сценария 'manage.py' Django генерирует во всех каталогах проектов Django.) Извините. –

5

Думаю, вам нужно открыть две оболочки: одну для выполнения задач из оболочки Python/Django, а одну для запуска celery worker (python manage.py celery worker). И как было сказано в предыдущем ответе, вы можете запускать задачи, используя apply() или apply_async()

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

+1

manage.py celeryd устарел сейчас: http://stackoverflow.com/a/23921568/1459594 – rschwieb

 Смежные вопросы

  • Нет связанных вопросов^_^