电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

詳解Python Celery和RabbitMQ實戰(zhàn)教程

瀏覽:3日期:2022-06-29 14:50:18
前言

Celery是一個異步任務隊列。它可以用于需要異步運行的任何內(nèi)容。RabbitMQ是Celery廣泛使用的消息代理。在本這篇文章中,我將使用RabbitMQ來介紹Celery的基本概念,然后為一個小型演示項目設置Celery 。最后,設置一個Celery Web控制臺來監(jiān)視我的任務

基本概念

  來!看圖說話:

詳解Python Celery和RabbitMQ實戰(zhàn)教程

BrokerBroker(RabbitMQ)負責創(chuàng)建任務隊列,根據(jù)一些路由規(guī)則將任務分派到任務隊列,然后將任務從任務隊列交付給worker

Consumer (Celery Workers)Consumer是執(zhí)行任務的一個或多個Celery workers。可以根據(jù)用例啟動許多workers

Result Backend后端用于存儲任務的結(jié)果。但是,它不是必需的元素,如果不在設置中包含它,就無法訪問任務的結(jié)果

安裝Celery

  首先,需要安裝好Celery,可以使用PyPI:

pip install celery選擇一個Broker:RabbitMQ

  為什么我們需要broker呢?這是因為Celery本身并不構(gòu)造消息隊列,所以它需要一個額外的消息傳輸來完成這項工作。這里可以將Celery看作消息代理的包裝器

實際上,也可以從幾個不同的代理中進行選擇,比如RabbitMQ、Redis或數(shù)據(jù)庫(例如Django數(shù)據(jù)庫)

在這里使用RabbitMQ作為代理,因為它功能完整、穩(wěn)定,Celery推薦使用它。由于演示我的環(huán)境是在Mac OS中,安裝RabbitMQ使用Homebrew即可:

brew install rabbitmq#如果是Ubuntu的話使用apt-get安裝啟動RabbitMQ

  程序?qū)⒃?b>/usr/local/sbin中安裝RabbitMQ,雖然有些系統(tǒng)可能會有所不同。可以將此路徑添加到環(huán)境變量路徑,以便以后方便地使用。例如,打開shell啟動文件~/.bash_profile添加:

PATH=$PATH:/usr/local/sbin

現(xiàn)在,可以使用rabbitmq-server命令啟動我們的RabbitMQ服務器。檢查RabbitMQ服務器成功啟動,將看到類似的輸出:

詳解Python Celery和RabbitMQ實戰(zhàn)教程

為Celery配置RabbitMQ

  RabbitMQ使用Celery之前,需要對RabbitMQ進行一些配置。簡單地說,我們需要創(chuàng)建一個虛擬主機和用戶,然后設置用戶權(quán)限,以便它可以訪問虛擬主機

# 添加用戶跟密碼$ rabbitmqctl add_user test test123# 添加虛擬主機$ rabbitmqctl add_vhost test_vhost# 為用戶添加標簽$ rabbitmqctl set_user_tags test test_tag# 設置用戶權(quán)限$ rabbitmqctl set_permissions -p test_vhost test '.*' '.*' '.*'

敲黑板!RabbitMQ中有三種操作:配置、寫入和讀取

上面命令末尾的字符串表示用戶test將擁有所有配置、寫入和讀取權(quán)限

演示項目

現(xiàn)在讓我們創(chuàng)建一個簡單的項目來演示Celery的使用

詳解Python Celery和RabbitMQ實戰(zhàn)教程

celery.py中添加以下代碼:

from __future__ import absolute_importfrom celery import Celeryapp = Celery(’test_celery’,broker=’amqp://test:test123@localhost/test_vhost’,backend=’rpc://’,include=[’test_celery.tasks’])

在這里,初始化了一個名為app的Celery實例,將用于創(chuàng)建一個任務。Celery的第一個參數(shù)只是項目包的名稱,即“test_celery”。

broker參數(shù)指定代理URL,對于RabbitMQ,傳輸是amqp。

后端參數(shù)指定后端URL。Celery中的后端用于存儲任務結(jié)果。因此,如果需要在任務完成時訪問任務的結(jié)果,應該為Celery設置一個后端。

rpc意味著將結(jié)果作為AMQP消息發(fā)送回去,這對本次演示來說是一種可接受的格式

include參數(shù)指定了在Celery工作程序啟動時要導入的模塊列表。我們在這里添加了tasks模塊,以便找到我們的任務。

tasks.py這個文件中,定義了我們的任務add_longtime:

from __future__ import absolute_importfrom test_celery.celery import appimport time@app.taskdef add_longtime(a, b): print ’long time task begins’ # sleep 5 seconds time.sleep(5) print ’long time task finished’ return a + b

可以看到,導入了在前面的Celery模塊中定義的應用程序,并將其用作任務方法的裝飾器。另外注意!app.task只是一個裝飾器。此外,我們在add_longtime任務中休眠5秒,以模擬一個耗時較長的Task

在設置好Celery之后,我們需要開始運行任務,它包含在runs_tasks.py:

from .tasks import add_longtimeimport timeif __name__ == ’__main__’: result = add_longtime.delay(1,2)#此時,任務還未完成,它將返回False print ’Task finished? ’, result.ready() print ’Task result: ’, result.result # 延長到10秒以確保任務已經(jīng)完成 time.sleep(10) # 現(xiàn)在任務完成,ready方法將返回True print ’Task finished? ’, result.ready() print ’Task result: ’, result.result

這里,我們使用delay方法調(diào)用任務add_longtime,如果我們想異步處理任務,就需要使用delay方法。此外,保存任務的結(jié)果并打印一些信息。如果任務已經(jīng)完成,ready方法將返回True,否則返回False。result屬性是任務的結(jié)果,如果任務尚未完成,則返回None。

啟動Celery

現(xiàn)在,可以使用下面的命令啟動Celery(注:在項目文件夾中運行):

celery -A test_celery worker --loglevel=info

Celery成功連接到RabbitMQ,你會看到這樣的東西:

詳解Python Celery和RabbitMQ實戰(zhàn)教程

運行任務

再項目文件中輸入以下命令運行它:

python -m test_celery.run_tasks

查看Celery控制臺,看到運行任務:

[2020-05-15 17:15:21,508: INFO/MainProcess] Received task: test_celery.tasks.add_longtime[25ba9c87-69a7-4383-b983-1cefdb32f8b3][2020-05-15 17:15:21,508: WARNING/Worker-3] long time task begins[2020-05-15 17:15:31,510: WARNING/Worker-3] long time task finished[2020-05-15 17:15:31,512: INFO/MainProcess]Task test_celery.tasks.add_longtime[25ba9c87-69a7-4383-b983-1cefdb32f8b3] succeeded in 15.003732774s: 3

當Celery收到一個任務,它打印出任務名稱與任務id(在括號中):

Received task: test_celery.tasks.add_longtime[7d942984-8ea6-4e4d-8097-225616f797d5]

在這一行下面是我們的任務add_longtime打印的兩行,時間延遲為5秒:

long time task beginslong time task finished

最后一行顯示我們的任務在5秒內(nèi)完成,任務結(jié)果為3:

Task test_celery.tasks.add_longtime[7d942984-8ea6-4e4d-8097-225616f797d5] succeeded in 5.025242167s: 3

在當前控制臺中,您將看到以下輸出:

詳解Python Celery和RabbitMQ實戰(zhàn)教程

實時監(jiān)控Celery

Flower是一款基于網(wǎng)絡的Celery實時監(jiān)控軟件。使用Flower,可以輕松地監(jiān)視任務進度和歷史記錄

使用pip來安裝Flower:

pip install flower

要啟動Flower web控制臺,需要運行以下命令:

celery -A test_celery flower

Flower將運行具有默認端口5555的服務器,可以通過http://localhost:5555訪問web控制臺

詳解Python Celery和RabbitMQ實戰(zhàn)教程

到此這篇關(guān)于詳解Python Celery和RabbitMQ實戰(zhàn)教程的文章就介紹到這了,更多相關(guān)Python Celery和RabbitMQ實戰(zhàn)內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛婚外情取证-青岛王军侦探事务所 | b2b网站大全,b2b网站排名,找b2b网站就上地球网 | 京港视通报道-质量走进大江南北-京港视通传媒[北京]有限公司 | 双吸泵,双吸泵厂家,OS双吸泵-山东博二泵业有限公司 | 一点车讯-汽车网站,每天一点最新车讯!| 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 3A别墅漆/3A环保漆_广东美涂士建材股份有限公司【官网】 | 新能源汽车电机定转子合装机 - 电机维修设备 - 睿望达 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 艺术生文化课培训|艺术生文化课辅导冲刺-济南启迪学校 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | SF6环境监测系统-接地环流在线监测装置-瑟恩实业 | 大连海岛旅游网>>大连旅游,大连海岛游,旅游景点攻略,海岛旅游官网 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 精准猎取科技资讯,高效阅读科技新闻_科技猎 | 衬四氟_衬氟储罐_四氟储罐-无锡市氟瑞特防腐科技有限公司 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 间甲酚,间甲酚厂家-山东祥东新材料 | 房间温控器|LonWorks|海思 | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | 亚克隆,RNAi干扰检测,miRNA定量检测-上海基屹生物科技有限公司 | 算命免费_生辰八字_免费在线算命 - 卜算子算命网 | 合肥宠物店装修_合肥宠物美容院装修_合肥宠物医院设计装修公司-安徽盛世和居装饰 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | 有福网(yofus.com)洗照片冲印,毕业聚会纪念册相册制作个性DIY平台 | 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 全钢实验台,实验室工作台厂家-无锡市辰之航装饰材料有限公司 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 铁素体测量仪/检测仪/铁素体含量测试仪-苏州圣光仪器有限公司 | 定制/定做衬衫厂家/公司-衬衫订做/订制价格/费用-北京圣达信 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 冷却塔减速机器_冷却塔皮带箱维修厂家_凉水塔风机电机更换-广东康明冷却塔厂家 | 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 捷码低代码平台 - 3D数字孪生_大数据可视化开发平台「免费体验」 |