消息队列celery初探

消息队列是网站架构中常用的组件,在异步任务、高并发等场景下使用广泛,celery是py下常用的消息队列,最近有一个异步计算需求,正好来学习一下celery的基本用法。

开发环境为window10、python3.6
首先安装celery,我们这里使用redis作为消息中间件

pip install celery[redis]

一共需要编写两个文件,一个任务(生产者)文件,一个生产者文件。
编写一个简单的任务文件celery_demo01.py,两个数相加,并加入sleep查看效果

# coding=utf-8
import time
from celery import Celery

broker = 'redis://localhost:6379/1'
backend = 'redis://localhost:6379/2'
app = Celery('demo01', broker=broker, backend=backend)

@app.task
def add(x, y):
    print("enter call func")
    time.sleep(5)
    return x + y

编写生产者文件app.py

# coding=utf-8
from celery_demo01 import add

if __name__ == "__main__":
    print("start")
    result = add.delay(2,8)
    print("end")
    print(result)

现在开始测试

1.首先启动redis

2.进入工程目录,输入命令,启动worker

celery worker -A celery_demo01 -l INFO

3.进入工程目录,启动生产者

python app.py

可以看到任务已经成功提交

但是worker却报错

问了度娘发现是windows10下celery的异常,解决方案就是

  1. pip install eventlet
  2. 启动worker时的命令加入参数: celery worker -A celery_demo01 -l INFO -P eventlet

重复之前步骤,问题解决,worker结果如下
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容