CentOS 7系统下的Celery+redis安装运行实战记录

参考资料来源:
https://www.cnblogs.com/alex3714/p/6351797.html

Celery的相关介绍和说明

Celery3.7的中文文档:
http://docs.jinkan.org/docs/celery/getting-started/first-steps-with-celery.html

1:Celery的作用主要是用于做相关的--异步任务神器
2:结合redis作为中间件主要用户任务的存储和处理结果的存储
Celery有以下优点(抄参考资料来源):
(1)简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的
(2)高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务
(3)快速:一个单进程的celery每分钟可处理上百万个任务
(4)灵活: 几乎celery的各个组件都可以被扩展及自定制

Celery工作流程图示

案例实践步骤

说明:该示例是实践参考https://www.cnblogs.com/alex3714/p/6351797.html
使用Redis做broker!

配置Redis作为中间件
相关格式:redis://:password@hostname:port/db_number

redis://:password@hostname:port/db_number
或
redis://localhost:6379/0
第1步:安装redis

(安装参考:https://www.jianshu.com/p/c450612c6295)

第2步:安装celery模块
# pip install celery
第3步:安装celery-with-redis或者直接安装reids模块模块
# pip install celery-with-redis
或
# pip install redis
第4步:启动redis-server服务
# redis-server /usr/local/redis/redis.conf 
# 启动成功如图示:
[root@localhost ~]# ps -ef |grep redis
root       5620      1  0 03:06 ?        00:00:03 redis-server 0.0.0.0:6379
root       5795   5778  0 03:52 pts/2    00:00:00 grep --color=auto redis
[root@localhost ~]#
第5步:编写异步任务测试示例,命名为tasks.py

注:此地方示例使用到了python3,所以请先提前安装好python3的环境

# cd /data/app/celeryTest/
# touch tasks.py
# nano  tasks.py

把下面的代码保存到tasks.py文件中

from celery import Celery
app = Celery('tasks',
             broker='redis://:123456@localhost:6379/0',
             backend='redis://:123456@localhost:6379/1')
@app.task
def add(x,y):
    print("running...",x,y)
    return x+y


代码片段说明:
broker='redis://localhost‘ :任务存贮
backend='redis://localhost':任务结果存贮

第6步:启动Celery Worker来开始监听并执行任务

注:执行启动任务需进入到tasks.py文件所在的目录下面

说明: 命令行执行celery worker -A <app> --loglevel=info时,<app>必须可导入,所以可以为PY模块或包,但需要注意的不管是包还是模块都必须正确指定Celery入口文件(如果为包则默认的入口文件名为celery.py)的绝对导入名称(app/work.app),Celery通过动态导入获取实例化后的应用,通过实例化时指定的配置以及include来依次导入任务执行文件中的任务指定单元,然后就是等待任务,可以看出Celery是通过相对/绝对导入来查找定义的任务执行单元,PY导入成功后会生成PYC文件,所以代码修改后一定要先删除PYC文件.(来源:http://blog.51cto.com/xmdevops/1885857

#cd /data/app/celeryTest/
# celery -A tasks worker --loglevel=info
启动Celery Worker来开始监听并执行任务

**--broker** URL(transport)是我们在celery模块中指定的broker关键字参数,你也可以通过-b选项在命令行指定一个不同的broker.


**--concurrency **是用来执行任务而prefork的worker进程,如果所有的worker都在执行任务,那么新添加的任务必须要等待有一个正在执行的任务完成后才能被执行。
默认的concurrency数量是机器上CPU的数量,你可以指定一个数量通过-c选项([celery worker -c](http://docs.celeryproject.org/en/master/reference/celery.bin.worker.html#cmdoption-celery-worker-c) )。在这里没有推荐值,因为最优值依懒许多因素,但是如果你的任务大部分都是I/O相关的,你可以尝试增加这个值,实验证明增加到2倍以上于CPU数的值对性能提高微乎其微,相反还会降低性能。
除了默认的进程池,Celery还支持使用Eventlet,Gevent和线程(查看 Concurrency


--Events是一个选项,它可以用来使Celery在worker中有事件发生时发送监控消息(events)。这些信息可以被一些监控程序使用,比如celery events和Flower---一个实时的Celery monitor,更多详细介绍可以查看Monitoring and Management guide.


--Queuens是一个队列列表,workers将会从中消费任务。可以告诉worker一次性地从多个队列中消费任务,这可以用来路由消息给指定的worker。这对于构建高质量的服务,关系的分离和提供优先级都有意义。具体的描述参考Routing Guide.

第7步:开启新的会话窗口
启动Celery Worker来开始监听并执行任务窗口:
image.png
派发任务给Celery Worker窗口:
异步任务的提交处理
异步任务的处理过程及结果
第8步:(非必须)查看任务结果

看你的worker终端会显示收到 一个任务,此时你想看任务结果的话,需要在调用 任务时 赋值个变量

>>> result = add.delay(4, 4)

远程连接redis查看对应信息:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容