如何安装芹菜任务模块

时间:2016-09-04 18:40:32

标签: python django rabbitmq celery

我在一台计算机上安装了django REST API(目前正在本地计算机上进行测试,但最终将在Web服务器上)。我们称这台机器为“客户端”。我还有一台运行CPU密集型任务的计算服务器,需要很长的执行时间。我们称这台机器为“run-server”。

“run-server”运行连接到本地rabbitmq服务器的芹菜工作者。该工作程序当前处于具有此结构的git模块中:

proj/
    client.py
    cmd.sh
    requirements.txt
    tasks.py

整个事情在一个虚拟实现中运行它的价值。 cmd.sh基本上在“run-server”上执行celery multi start workername -A tasks -l infoclient.py是一个cli脚本,可以从任何机器(即“客户端”)从shell手动向“运行服务器”提交任务。

我想从django setup 运行等效的客户端脚本,而不得不复制django存储库中的tasks.pyclient.py代码。理想情况下,我会从django代码中pip install proj并导入项目,就像客户端脚本一样使用它。

如何打包proj来实现这一目标?

我习惯打包我自己的python模块,其结构大致如下:

proj/
    bin/
        proj
    proj/
        __init__.py
        __main__.py
        script.py
    setup.py
    requirements.txt

1 个答案:

答案 0 :(得分:0)

我设法让它自己工作。上面的结构才有效。您只需替换为celery multi start workername -A tasks -l info,而不是celery multi start workername -A proj.tasks -l info,一切正常。必须在django和worker中安装相同版本的模块,因为作业队列是通过duck-typing完成的(即路径和名称必须匹配)