如何手动从shell运行芹菜定期任务?

时间:2012-10-15 16:34:54

标签: python django celery django-celery celery-task

我正在使用芹菜和django-芹菜。我已经定义了一个我想测试的周期性任务。是否可以手动从shell运行周期性任务,以便查看控制台输出?

3 个答案:

答案 0 :(得分:84)

您是否尝试过从Django shell运行任务?您可以使用任务的.apply方法来确保它在热心和本地运行。

假设在my_task子模块中的Django app myapp中调用了tasks任务:

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

结果实例与通常的AsyncResult类型具有相同的API,除了始终热切地和本地评估结果,.apply()方法将阻塞,直到任务运行完成。

答案 1 :(得分:6)

我认为你需要打开两个shell:一个用于从Python / Django shell执行任务,另一个用于运行celery workerpython manage.py celery worker)。如前面的答案所述,您可以使用apply()apply_async()

运行任务

我已编辑了答案,因此您没有使用已弃用的命令。

答案 2 :(得分:6)

如果您的意思是仅在不满足条件(例如,不满足定期时间)时触发任务。您可以分两个步骤进行操作。

1。获取任务ID。

您可以通过键入来完成。

celery inspect registered

您将看到类似app.tasks.update_something的内容。 如果没有,则可能是celery没有启动。只需运行它即可。

2。使用celery call

运行任务
celery call app.tasks.update_something

有关更多详细信息,只需键入

celery --help
celery inspect --help
celery call --help