久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

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

Python Celery異步任務隊列使用方法解析

瀏覽:3日期:2022-07-14 15:29:22

Celery是一個異步的任務隊列(也叫做分布式任務隊列),一個簡單,靈活,可靠的分布式系統(tǒng),用于處理大量消息,同時為操作提供維護此類系統(tǒng)所需要的工具。

celery的優(yōu)點

1:簡單,容易使用,不需要配置文件

2:高可用,任務執(zhí)行失敗或執(zhí)行過程中發(fā)生連續(xù)中斷,celery會自動嘗試重新執(zhí)行任務

3:快速,一個單進程的celery每分鐘可以處理上百萬個任務

4:靈活,幾乎celery的各個組件都可以被擴展

celery應用場景

1:異步發(fā)郵件,一般發(fā)郵件等比較耗時的操作,這個時候需要提交任務給celery就可以了,由worker進行發(fā)郵件操作

2:有些跑批量接口任務,需要耗時較長,也可以做成異步任務

3:定時調(diào)度任務

Celery與Django一起使用(以發(fā)送短信為例)

獨立于項目新建一個package包

在package包中新建一個名為sms的package包

新建tasks.py文件

#定義耗時的函數(shù)from utils.ytx_sdk.sendSMS import CCPfrom celery_tasks.main import app#為函數(shù)添加裝飾器,這個函數(shù)就成為了celery的任務@app.taskdef send_sms_code(mobile,code,expires,template_id): try: # CCP.sendTemplateSMS(mobile,code,expires,template_id) print(code) except: return ’發(fā)送短信失敗’

在package包中新建config.py

內(nèi)容如下(中間人,接收生產(chǎn)者發(fā)來的消息即Task,將任務存入隊列。任務的消費者是Worker。Celery本身不提供隊列服務,推薦用Redis或RabbitMQ實現(xiàn)隊列服務。)

#指定代理人隊列==>redisbroker_url=’redis://127.0.0.1:6379/15’

在package包中新建main.py

內(nèi)容如下(需要將task注冊到celery應用中)

#啟動工人的文件from celery import Celery# 為celery使用django配置文件進行設(shè)置import osif not os.getenv(’DJANGO_SETTINGS_MODULE’): os.environ[’DJANGO_SETTINGS_MODULE’] = ’yinyue.settings.dev’# 創(chuàng)建celery應用app = Celery(’yinyue’)# 導入celery配置app.config_from_object(’celery_tasks.config’)# 自動注冊celery任務app.autodiscover_tasks([ ’celery_tasks.sms’])

在django框架對應模塊的視圖中使用

#調(diào)用celery的任務:任務名.delay(參數(shù))send_sms_code.delay(mobile,code,constants.SMS_CODE_EXPIRES/60,1)

啟動celery服務: celery -A celery_tasks.main worker -l info

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 赤峰市| 聂荣县| 阿克苏市| 雅江县| 梁平县| 永昌县| 辽宁省| 新平| 正定县| 梅河口市| 苏尼特左旗| 淮北市| 涟水县| 怀安县| 资中县| 托克托县| 鄯善县| 罗江县| 辛集市| 隆昌县| 六枝特区| 嵊泗县| 峨眉山市| 常山县| 日照市| 和硕县| 敖汉旗| 湾仔区| 舟山市| 卢龙县| 泊头市| 隆回县| 莲花县| 望城县| 长兴县| 扎鲁特旗| 凤冈县| 涟源市| 乳山市| 扎赉特旗| 宽城|