在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

干貨:基于Redis配置Celery任務(wù)(附源碼)

如意 ? 來(lái)源:馬哥Linux運(yùn)維 ? 作者:零壹軒 ? 2020-09-03 10:53 ? 次閱讀

作為一個(gè)分布式異步計(jì)算框架,Celery雖然常用于Web框架中,但也可以單獨(dú)使用。 雖然常規(guī)搭配的消息隊(duì)列是RabbitMQ,但是由于某些情況下系統(tǒng)已經(jīng)包含了Redis,那就可以復(fù)用。

以下撇開(kāi)Web框架,介紹基于Redis配置Celery任務(wù)的方法。

pip install celery[redis]

項(xiàng)目結(jié)構(gòu)

干貨:基于Redis配置Celery任務(wù)(附源碼)

其中,main.py是觸發(fā)Task的業(yè)務(wù)代碼。當(dāng)然,文件名可以隨意改。celery.py是Celery的app定義的位置,tasks.py是Task定義的位置,文件名不建議修改。

配置Celery

在celery.py中寫(xiě)入如下代碼:

干貨:基于Redis配置Celery任務(wù)(附源碼)

其中,REDIS_URL從同一的配置settings.py中引入, 形式大概是redis://localhost:6379/0。這里既用Redis來(lái)當(dāng)broker,又用來(lái)當(dāng)backend。即,既當(dāng)消息隊(duì)列,又當(dāng)結(jié)果反饋的數(shù)據(jù)庫(kù)(默認(rèn)僅保存1天)。

在include=,需要填一個(gè)下游worker的包名列表。這里選擇了同一個(gè)包的tasks.py文件。

額外設(shè)置的task_track_started,是命令Worker反饋STARTED狀態(tài)。默認(rèn)情況下,是無(wú)法知道任務(wù)什么時(shí)候開(kāi)始執(zhí)行的。

編寫(xiě)任務(wù)并調(diào)用

在tasks.py文件中,添加異步任務(wù)的實(shí)現(xiàn)。

干貨:基于Redis配置Celery任務(wù)(附源碼)

在需要發(fā)起任務(wù)的地方,用.apply_async可以觸發(fā)異步調(diào)用。即,實(shí)際只是向消息隊(duì)列發(fā)送消息,真正的執(zhí)行操作在遠(yuǎn)程。

干貨:基于Redis配置Celery任務(wù)(附源碼)

運(yùn)行Worker:

celery -A your_project worker

運(yùn)行原理

一次Task從觸發(fā)到完成,序列圖如下:

干貨:基于Redis配置Celery任務(wù)(附源碼)

其中,main代表業(yè)務(wù)代碼主進(jìn)程。它可能是Django、Flask這類(lèi)Web服務(wù),也可能是一個(gè)其它類(lèi)型的進(jìn)程。worker就是指Celery的Worker。

main發(fā)送消息后,會(huì)得到一個(gè)AsyncResult,其中包含task_id。僅通過(guò)task_id,也可以自己構(gòu)造一個(gè)AsyncResult,查詢(xún)相關(guān)信息。其中,代表運(yùn)行過(guò)程的,主要是state。

worker會(huì)持續(xù)保持對(duì)Redis(或其它消息隊(duì)列,如RabbitMQ)的關(guān)注,查詢(xún)新的消息。如果獲得新消息,將其消費(fèi)后,開(kāi)始運(yùn)行do_sth。運(yùn)行完成會(huì)把返回值對(duì)應(yīng)的結(jié)果,以及一些運(yùn)行信息,回寫(xiě)到Redis(或其它backend,如Django數(shù)據(jù)庫(kù)等)上。在系統(tǒng)的任何地方,通過(guò)對(duì)應(yīng)的AsyncResult(task_id)就可以查詢(xún)到結(jié)果。

Celery Task的狀態(tài)

以下是狀態(tài)圖:

干貨:基于Redis配置Celery任務(wù)(附源碼)

其中,除SUCCESS外,還有失敗(FAILURE)、取消(REVOKED)兩個(gè)結(jié)束狀態(tài)。而RETRY則是在設(shè)置了重試機(jī)制后,進(jìn)入的臨時(shí)等待狀態(tài)。

另外,如果保存在Redis的結(jié)果信息被清理(默認(rèn)僅保存1天),那么任務(wù)狀態(tài)又會(huì)變成PENDING。這在設(shè)計(jì)上是個(gè)巨大的問(wèn)題,使用時(shí)要做對(duì)應(yīng)容錯(cuò)。

常見(jiàn)控制操作

干貨:基于Redis配置Celery任務(wù)(附源碼)

有時(shí),在業(yè)務(wù)主進(jìn)程中需要等待異步運(yùn)行的結(jié)果,這時(shí)需要使用wait。如果要取消一個(gè)排隊(duì)中、或已執(zhí)行的任務(wù),則可以使用revoke。即使任務(wù)已經(jīng)執(zhí)行完成,也可以使用revoke,但不會(huì)有任何變化。如果需要提前刪除任務(wù)記錄,可以使用forget。
責(zé)編AJX

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1269

    瀏覽量

    69732
  • 分布式
    +關(guān)注

    關(guān)注

    1

    文章

    924

    瀏覽量

    74610
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    378

    瀏覽量

    10942
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    redis集群環(huán)境安裝及配置

    redis集群主從配置
    發(fā)表于 03-08 09:59

    基于linux的安裝和配置redis

    linux(centos)下安裝、配置redis
    發(fā)表于 04-11 15:28

    阿里云ECS的redis配置步驟

    阿里云ECS配置redis
    發(fā)表于 10-28 08:28

    Mac上redis怎么安裝配置

    Mac上redis基本安裝配置及問(wèn)題
    發(fā)表于 05-01 06:18

    啟動(dòng)Redis的三種方法

    Redis筆記(1)——安裝、卸載、三種方法啟動(dòng)RedisRedis命令使用(干貨十足),Redis兩種方法設(shè)置密碼,時(shí)間復(fù)雜度(更完善哦
    發(fā)表于 06-08 16:09

    走近源碼Redis如何執(zhí)行命令的

    走近源碼Redis如何執(zhí)行命令
    發(fā)表于 06-09 16:31

    【昉·星光 2 高性能RISC-V單板計(jì)算機(jī)體驗(yàn)】Redis源碼編譯和性能測(cè)試以及與樹(shù)莓派4B對(duì)比

    本文首先介紹Redis是什么,然后介紹如何在VisionFive2上編譯Redis源碼,以及從源碼安裝Redis,最后介紹如何在Vision
    發(fā)表于 12-10 21:27

    【愛(ài)芯派 Pro 開(kāi)發(fā)板試用體驗(yàn)】Redis源碼編譯和基準(zhǔn)測(cè)試

    本文首先介紹Redis是什么,然后介紹如何在愛(ài)芯派上編譯Redis源碼,以及從源碼安裝Redis,最后介紹如何在愛(ài)芯派上運(yùn)行
    發(fā)表于 12-10 22:18

    蜂鳴器播放音樂(lè)設(shè)計(jì)與實(shí)現(xiàn)(源碼

    蜂鳴器播放音樂(lè)設(shè)計(jì)與實(shí)現(xiàn)(源碼
    發(fā)表于 04-24 11:00 ?90次下載
    蜂鳴器播放音樂(lè)設(shè)計(jì)與實(shí)現(xiàn)(<b class='flag-5'>附</b><b class='flag-5'>源碼</b>)

    Schedule:簡(jiǎn)單實(shí)用的 Python 周期任務(wù)調(diào)度工具

    。 ** ** 2.當(dāng)需要執(zhí)行的定時(shí)任務(wù)有上百個(gè)的時(shí)候,Crontab的 管理就會(huì)特別不方便 。 ** 另外一個(gè)選擇是 Celery,但是 Celery配置比較麻煩,如果你只是需
    的頭像 發(fā)表于 10-30 11:18 ?708次閱讀

    Celery Beat 的周期調(diào)度機(jī)制及實(shí)現(xiàn)原理

    Celery 是一個(gè)簡(jiǎn)單、靈活且可靠的,處理大量消息的分布式系統(tǒng),它是一個(gè)專(zhuān)注于實(shí)時(shí)處理的任務(wù)隊(duì)列,同時(shí)也支持任務(wù)調(diào)度。 為了講解 Celery Beat 的周期調(diào)度機(jī)制及實(shí)現(xiàn)原理,我
    的頭像 發(fā)表于 10-31 15:24 ?779次閱讀

    Crontab:簡(jiǎn)單實(shí)用的Python 周期任務(wù)調(diào)度工具

    ,Crontab 的 管理就會(huì)特別不方便 。 還有一個(gè)選擇是 Celery,但是 Celery配置比較麻煩,如果你只是需要一個(gè)輕量級(jí)的調(diào)度工具,Celery 不會(huì)是一個(gè)好選擇。 在
    的頭像 發(fā)表于 11-01 09:40 ?802次閱讀

    基于Django的Celery異步任務(wù)和定時(shí)任務(wù)的實(shí)戰(zhàn)教程

    Django與Celery是基于Python進(jìn)行Web后端開(kāi)發(fā)的核心搭配,在運(yùn)營(yíng)開(kāi)發(fā)(即面向企業(yè)內(nèi)部)的場(chǎng)景中非常常見(jiàn)。 下面是基于Django的Celery異步任務(wù)和定時(shí)任務(wù)的實(shí)戰(zhàn)教
    的頭像 發(fā)表于 11-02 10:45 ?778次閱讀
    基于Django的<b class='flag-5'>Celery</b>異步<b class='flag-5'>任務(wù)</b>和定時(shí)<b class='flag-5'>任務(wù)</b>的實(shí)戰(zhàn)教程

    redis連接數(shù)配置多少合適

    Redis 是一款高性能的內(nèi)存數(shù)據(jù)庫(kù),廣泛應(yīng)用于緩存、消息隊(duì)列、會(huì)話(huà)存儲(chǔ)等場(chǎng)景。在配置 Redis 連接數(shù)時(shí),需要根據(jù)實(shí)際情況綜合考慮一系列因素,如服務(wù)器硬件規(guī)格、業(yè)務(wù)負(fù)載、并發(fā)訪問(wèn)量、數(shù)據(jù)模型等
    的頭像 發(fā)表于 12-04 11:31 ?1485次閱讀

    云容器redis持久化配置

    丟失。 Redis提供了不同的持久化機(jī)制,可以根據(jù)需要進(jìn)行配置。本文將詳細(xì)介紹云容器中Redis的持久化配置及其相關(guān)配置項(xiàng)。 一、
    的頭像 發(fā)表于 12-05 10:07 ?539次閱讀
    主站蜘蛛池模板: 日韩成人毛片高清视频免费看 | 丁香婷婷六月天 | 激情福利网 | 成人精品综合免费视频 | 色多多在线观看播放 | 国片一级 免费看 | 久在操 | 亚洲视频一区二区三区 | 在线播放免费人成毛片乱码 | 色婷婷色丁香 | 一级特黄色毛片免费看 | 日韩毛片免费线上观看 | 一级毛片在线 | 一本大道加勒比久久综合 | 美女扒尿口给男人桶到爽 | 国产白白白在线永久播放 | 伊人网亚洲 | 国产精品资源在线观看 | 人操人摸 | 久久久久久久久久久9精品视频 | 黄网免费观看 | 免费a大片 | 老湿影院免费体验区 | 天天爽夜夜爽人人爽 | 免费人成网站永久 | 午夜性爽爽爽 | 亚洲国产综合视频 | 亚洲一区二区三区四区五区六区 | 五月天精品 | 特黄特色网站 | 日本高清色视频www 日本高清色视频在线观看免费 | 日本不卡专区 | 欧美在线精品一区二区三区 | 午夜影院免费体验 | 黄色在线观看国产 | 污视频18高清在线观看 | 男同小黄文 | 新天堂| 亚洲情a成黄在线观看 | 天堂最新版在线www在线 | aa小视频|