在Celery中使用Windows Azure辅助角色

时间:2014-02-05 17:47:19

标签: python django azure celery

我在Windows Azure中有一个运行Django的Web角色。我有一个耗时的计算来异步运行,用例如下:客户端发送计算请求,服务器返回一个ID来检查计算结果,然后客户端可以使用此ID来检索这个结果一出来就可以了。

现在我错过了后端部分,我想在Windows Azure中使用辅助角色。由于我想保持Azure独立,我想用Celery来处理这个部分。缺点是我找不到涵盖这个主题的任何资源。有没有人有一些见解?

非常感谢提前!

2 个答案:

答案 0 :(得分:4)

我用azure做了一个连续的webjob运行芹菜。

<your repo>/App_Data/jobs/continuous/Celery/celery.cmd

在celery.cmd中我像这样开始芹菜。

set PYTHONPATH=%PYTHONPATH%;D:\home\site\wwwroot\site-packages\
cd D:\home\site\wwwroot\src
DEL D:\home\site\wwwroot\src\celery.pid
D:\Python34\python.exe -m celery -A conf worker -Q celery -c 10 -l DEBUG --pidfile D:\home\site\wwwroot\src\celery.pid

所以在这里讨厌的是我设置了python路径(我确定这可以在全局范围内完成,有些是在azure中),然后我只需cd进入我的项目django root并删除任何PID文件我运行celery命令行样式。当这个过程结束时,芹菜将重新开始,因为它是一个连续的webjob。

您可能希望根据需要调整标记。

如果您需要芹菜只能在一台机器上运行。您必须拥有<your repo>/App_Data/jobs/continuous/Celery/settings.job个文件:

{"is_singleton": true}

答案 1 :(得分:0)

以为我会更清楚地说明要做什么,让芹菜工作者开始使用网络应用程序:  1.创建一个名为celery.cmd的文件并添加以下内容:

cd D:\home\site\wwwroot 
D:\home\site\wwwroot\env\Scripts\python.exe -m celery -A yourapp.celery worker --loglevel=info --concurrency=1

2。使用以下内容创建名为settings.job的文件(这可确保如果Web应用程序扩展,则工作程序也不会扩展):

{"is_singleton": true}

3.Zip上面的2个文件

4.在Azure门户中,创建连续 Web作业并随之上传zip文件。