Я использую сельдерей и джанго-сельдерей. Я определил периодическую задачу, которую я бы хотел проверить. Возможно ли запустить периодическую задачу из оболочки вручную, чтобы я просмотрел вывод консоли?Как я могу запустить периодическую задачу сельдерея из оболочки вручную?
ответ
Вы пробовали запустить задание из оболочки Django? Вы можете использовать метод задачи .apply
, чтобы обеспечить его работу с нетерпением и локально.
Предполагая, что задача называется my_task
в Django приложение myapp
в tasks
субмодуля:
$ python manage.py shell
>>> from myapp.tasks import my_task
>>> eager_result = my_task.apply()
Экземпляр результат имеет тот же интерфейс, что и обычная AsyncResult
типа, за исключением того, что результат всегда оценивается с готовностью и на местном уровне и метод .apply()
будет блокироваться до завершения задачи.
Думаю, вам нужно открыть две оболочки: одну для выполнения задач из оболочки Python/Django, а одну для запуска celery worker
(python manage.py celery worker
). И как было сказано в предыдущем ответе, вы можете запускать задачи, используя apply()
или apply_async()
Я отредактировал ответ, чтобы вы не использовали устаревшую команду.
manage.py celeryd устарел сейчас: http://stackoverflow.com/a/23921568/1459594 – rschwieb
Как я могу сделать то же самое для проекта пирамиды? Структура каталога будет как: /MyProject => celeryconfig.py, setup.py, development.py, /просмотров/celerytasks => mycelerytask.py .Теперь здесь я хочу запустить «mycelerytask. py '(которая является периодической задачей) вручную из командной строки. Вы можете помочь? – Workonphp
@Workonphp Я не знаком с Pyramid, к сожалению, поэтому я не знаю, как Celery интегрируется с Pyramid вообще. (Обратите внимание, что мое решение выше Django-specific, требующее сценария 'manage.py' Django генерирует во всех каталогах проектов Django.) Извините. –