麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > Python > 正文

詳解分布式任務(wù)隊(duì)列Celery使用說(shuō)明

2020-02-15 23:49:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

起步

Celery 是一個(gè)簡(jiǎn)單、靈活且可靠的,處理大量消息的分布式系統(tǒng),并且提供維護(hù)這樣一個(gè)系統(tǒng)的必需工具。它是一個(gè)專注于實(shí)時(shí)處理的任務(wù)隊(duì)列,同時(shí)也支持任務(wù)調(diào)度。

運(yùn)行模式是生產(chǎn)者消費(fèi)者模式:

任務(wù)隊(duì)列:任務(wù)隊(duì)列是一種在線程或機(jī)器間分發(fā)任務(wù)的機(jī)制。

消息隊(duì)列:消息隊(duì)列的輸入是工作的一個(gè)單元,稱為任務(wù),獨(dú)立的職程(Worker)進(jìn)程持續(xù)監(jiān)視隊(duì)列中是否有需要處理的新任務(wù)。

Celery 用消息通信,通常使用中間人(Broker)在客戶端和職程間斡旋。這個(gè)過程從客戶端向隊(duì)列添加消息開始,之后中間人把消息派送給職程,職程對(duì)消息進(jìn)行處理。

Celery的架構(gòu)由三部分組成,消息中間件(message broker),任務(wù)執(zhí)行單元(worker)和任務(wù)執(zhí)行結(jié)果存儲(chǔ)(task result store)組成。

消息中間件:Celery本身不提供消息服務(wù),但是可以方便的和第三方提供的消息中間件集成,包括,RabbitMQ, Redis, MongoDB等,本文使用 redis 。

任務(wù)執(zhí)行單元:Worker是Celery提供的任務(wù)執(zhí)行的單元,worker并發(fā)的運(yùn)行在分布式的系統(tǒng)節(jié)點(diǎn)中

任務(wù)結(jié)果存儲(chǔ):Task result store用來(lái)存儲(chǔ)Worker執(zhí)行的任務(wù)的結(jié)果,Celery支持以不同方式存儲(chǔ)任務(wù)的結(jié)果,包括Redis,MongoDB,Django ORM,AMQP等,這里我先不去看它是如何存儲(chǔ)的,就先選用Redis來(lái)存儲(chǔ)任務(wù)執(zhí)行結(jié)果。

安裝

通過 pip 命令即可安裝:

pip install celery

本文使用 redis 做消息中間件,所以需要在安裝:

pip install redis

redis軟件也要安裝,官網(wǎng)只提供了 linux 版本的下載:https://redis.io/download,windows 的可以到 https://github.com/MicrosoftArchive/redis 下載 exe 安裝包。

簡(jiǎn)單的demo

為了運(yùn)行一個(gè)簡(jiǎn)單的任務(wù),從中說(shuō)明 celery 的使用方式。在項(xiàng)目文件夾內(nèi)創(chuàng)建 app.py 和 tasks.py 。tasks.py 用來(lái)定義任務(wù):

# tasks.pyimport timefrom celery import Celerybroker = 'redis://127.0.0.1:6379/1'backend = 'redis://127.0.0.1:6379/2'app = Celery('my_tasks', broker=broker, backend=backend)@app.taskdef add(x, y):  print('enter task')  time.sleep(3)  return x + y

這些代碼做了什么事。 broker 指定任務(wù)隊(duì)列的消息中間件,backend 指定了任務(wù)執(zhí)行結(jié)果的存儲(chǔ)。app 就是我們創(chuàng)建的 Celery 對(duì)象。通過 app.task 修飾器將 add 函數(shù)變成一個(gè)一部的任務(wù)。

# app.pyfrom tasks import addif __name__ == '__main__':  print('start task')  result = add.delay(2, 18)  print('end task')  print(result)

add.delay 函數(shù)將任務(wù)序列化發(fā)送到消息中間件。終端執(zhí)行 python app.py 可以看到輸出一個(gè)任務(wù)的唯一識(shí)別:

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 羞羞视频免费网站含羞草 | 色淫网站免费视频 | 午夜久久久精品一区二区三区 | 国产午夜电影在线观看 | 欧美电影在线观看 | 精品一区二区三区免费毛片 | 国产人成免费爽爽爽视频 | 亚洲精品欧美二区三区中文字幕 | 国产精品www | 日韩毛片免费观看 | 国产一区二区免费 | 91成人在线网站 | 在线看91 | 黄网站在线免费 | 亚洲福利视频52 | 成人国产精品久久久 | 亚洲精品 在线播放 | 九九热精品在线 | 青青国产在线视频 | 欧美日本亚洲视频 | 国产精品久久77777 | 欧美hdfree性xxxx | 免费观看的毛片手机视频 | 一级黄色在线观看 | a视频在线播放 | 久久毛片 | 欧美成人精品h版在线观看 久久久久久三区 | 成人精品 | 一级毛片免费观看在线 | 中文字幕 亚洲一区 | 天天黄色片 | 国产精品aⅴ | 九九午夜 | 亚洲欧美一区二区三区在线观看 | 国产高清自拍一区 | 国产一区二区三区影视 | 天天骑夜夜操 | 国产一及毛片 | 成人国产精品一区二区毛片在线 | 久久久久九九九女人毛片 | 91美女福利视频 |