Python 如何从shell手动运行芹菜周期任务?
我用的是芹菜和django芹菜。我已经定义了一个要测试的周期性任务。是否可以手动从shell运行周期性任务,以便我查看控制台输出?您是否刚刚尝试从Django shell运行该任务?您可以使用任务的Python 如何从shell手动运行芹菜周期任务?,python,django,celery,django-celery,celery-task,Python,Django,Celery,Django Celery,Celery Task,我用的是芹菜和django芹菜。我已经定义了一个要测试的周期性任务。是否可以手动从shell运行周期性任务,以便我查看控制台输出?您是否刚刚尝试从Django shell运行该任务?您可以使用任务的.apply方法来确保它在本地急切地运行 假设任务在Django appmyapp的tasks子模块中被称为myu task: $ python manage.py shell >>> from myapp.tasks import my_task >>> eage
.apply
方法来确保它在本地急切地运行
假设任务在Django appmyapp
的tasks
子模块中被称为myu task
:
$ python manage.py shell
>>> from myapp.tasks import my_task
>>> eager_result = my_task.apply()
result实例与通常的
AsyncResult
类型具有相同的API,不同的是结果总是在本地进行急切的计算,并且.apply()
方法将一直阻塞,直到任务运行完成。我认为您需要打开两个shell:一个用于从Python/Django shell执行任务,一个用于运行芹菜工人
(python manage.py芹菜工人
)。正如前面的回答所说,您可以使用apply()
或apply\u async()
我已经编辑了答案,因此您没有使用不推荐的命令。如果您的意思是在条件不满足时触发任务,例如,周期时间不满足。你可以分两步来做 1.获取您的任务id。 你可以通过打字来完成
celery inspect registered
您将看到类似于app.tasks.update\u something
的内容。
如果没有,则可能是芹菜没有启动。只要运行它
2.使用芹菜呼叫运行任务
celery call app.tasks.update_something
要了解更多详细信息,只需键入
celery --help
celery inspect --help
celery call --help
我怎样才能为金字塔项目做同样的事情?目录结构如下:/myproject=>celeryconfig.py、setup.py、development.py、/views/celerytasks=>myclerytask.py。现在,我想从命令行手动运行“myclerytask.py”(这是周期性任务)。你能帮忙吗?@workinphp很遗憾,我不熟悉金字塔,所以我根本不知道芹菜是如何与金字塔结合的。(请注意,我上面的解决方案是Django特有的,需要Django在所有Django项目目录中生成manage.py
脚本。)抱歉.manage.py celeryd现在不推荐使用:它还支持args和kwargs$celery-A yourapp call app.tasks.update_something--kwargs='{“key”:value,}这非常有用,但在结尾缺少一个括号。更正:Cellery-A yourapp call app.tasks.update_something--kwargs='{“key”:value,…}'
虽然inspect
很棒,但不幸的是它只适用于“RabbitMQ(AMQP)和Redis传输”(而不是像filesystem
这样的其他文件系统)