色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

如意 ? 來源:馬哥Linux運維 ? 作者:零壹軒 ? 2020-09-03 10:53 ? 次閱讀

作為一個分布式異步計算框架,Celery雖然常用于Web框架中,但也可以單獨使用。 雖然常規搭配的消息隊列是RabbitMQ,但是由于某些情況下系統已經包含了Redis,那就可以復用。

以下撇開Web框架,介紹基于Redis配置Celery任務的方法。

pip install celery[redis]

項目結構

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

其中,main.py是觸發Task的業務代碼。當然,文件名可以隨意改。celery.py是Celery的app定義的位置,tasks.py是Task定義的位置,文件名不建議修改。

配置Celery

在celery.py中寫入如下代碼:

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

其中,REDIS_URL從同一的配置settings.py中引入, 形式大概是redis://localhost:6379/0。這里既用Redis來當broker,又用來當backend。即,既當消息隊列,又當結果反饋的數據庫(默認僅保存1天)。

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

額外設置的task_track_started,是命令Worker反饋STARTED狀態。默認情況下,是無法知道任務什么時候開始執行的。

編寫任務并調用

在tasks.py文件中,添加異步任務的實現。

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

在需要發起任務的地方,用.apply_async可以觸發異步調用。即,實際只是向消息隊列發送消息,真正的執行操作在遠程。

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

運行Worker:

celery -A your_project worker

運行原理

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

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

其中,main代表業務代碼主進程。它可能是Django、Flask這類Web服務,也可能是一個其它類型的進程。worker就是指Celery的Worker。

main發送消息后,會得到一個AsyncResult,其中包含task_id。僅通過task_id,也可以自己構造一個AsyncResult,查詢相關信息。其中,代表運行過程的,主要是state。

worker會持續保持對Redis(或其它消息隊列,如RabbitMQ)的關注,查詢新的消息。如果獲得新消息,將其消費后,開始運行do_sth。運行完成會把返回值對應的結果,以及一些運行信息,回寫到Redis(或其它backend,如Django數據庫等)上。在系統的任何地方,通過對應的AsyncResult(task_id)就可以查詢到結果。

Celery Task的狀態

以下是狀態圖:

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

其中,除SUCCESS外,還有失敗(FAILURE)、取消(REVOKED)兩個結束狀態。而RETRY則是在設置了重試機制后,進入的臨時等待狀態。

另外,如果保存在Redis的結果信息被清理(默認僅保存1天),那么任務狀態又會變成PENDING。這在設計上是個巨大的問題,使用時要做對應容錯。

常見控制操作

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

有時,在業務主進程中需要等待異步運行的結果,這時需要使用wait。如果要取消一個排隊中、或已執行的任務,則可以使用revoke。即使任務已經執行完成,也可以使用revoke,但不會有任何變化。如果需要提前刪除任務記錄,可以使用forget。
責編AJX

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Web
    Web
    +關注

    關注

    2

    文章

    1263

    瀏覽量

    69511
  • 分布式
    +關注

    關注

    1

    文章

    903

    瀏覽量

    74537
  • Redis
    +關注

    關注

    0

    文章

    376

    瀏覽量

    10882
收藏 人收藏

    評論

    相關推薦

    redis集群環境安裝及配置

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

    基于linux的安裝和配置redis

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

    阿里云ECS的redis配置步驟

    阿里云ECS配置redis
    發表于 10-28 08:28

    Mac上redis怎么安裝配置

    Mac上redis基本安裝配置及問題
    發表于 05-01 06:18

    啟動Redis的三種方法

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

    走近源碼Redis如何執行命令的

    走近源碼Redis如何執行命令
    發表于 06-09 16:31

    【昉·星光 2 高性能RISC-V單板計算機體驗】Redis源碼編譯和性能測試以及與樹莓派4B對比

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

    【愛芯派 Pro 開發板試用體驗】Redis源碼編譯和基準測試

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

    蜂鳴器播放音樂設計與實現(源碼

    蜂鳴器播放音樂設計與實現(源碼
    發表于 04-24 11:00 ?90次下載
    蜂鳴器播放音樂設計與實現(<b class='flag-5'>附</b><b class='flag-5'>源碼</b>)

    Schedule:簡單實用的 Python 周期任務調度工具

    。 ** ** 2.當需要執行的定時任務有上百個的時候,Crontab的 管理就會特別不方便 。 ** 另外一個選擇是 Celery,但是 Celery配置比較麻煩,如果你只是需
    的頭像 發表于 10-30 11:18 ?685次閱讀

    Celery Beat 的周期調度機制及實現原理

    Celery 是一個簡單、靈活且可靠的,處理大量消息的分布式系統,它是一個專注于實時處理的任務隊列,同時也支持任務調度。 為了講解 Celery Beat 的周期調度機制及實現原理,我
    的頭像 發表于 10-31 15:24 ?713次閱讀

    Crontab:簡單實用的Python 周期任務調度工具

    ,Crontab 的 管理就會特別不方便 。 還有一個選擇是 Celery,但是 Celery配置比較麻煩,如果你只是需要一個輕量級的調度工具,Celery 不會是一個好選擇。 在
    的頭像 發表于 11-01 09:40 ?756次閱讀

    基于Django的Celery異步任務和定時任務的實戰教程

    Django與Celery是基于Python進行Web后端開發的核心搭配,在運營開發(即面向企業內部)的場景中非常常見。 下面是基于Django的Celery異步任務和定時任務的實戰教
    的頭像 發表于 11-02 10:45 ?729次閱讀
    基于Django的<b class='flag-5'>Celery</b>異步<b class='flag-5'>任務</b>和定時<b class='flag-5'>任務</b>的實戰教程

    redis連接數配置多少合適

    Redis 是一款高性能的內存數據庫,廣泛應用于緩存、消息隊列、會話存儲等場景。在配置 Redis 連接數時,需要根據實際情況綜合考慮一系列因素,如服務器硬件規格、業務負載、并發訪問量、數據模型等
    的頭像 發表于 12-04 11:31 ?1417次閱讀

    云容器redis持久化配置

    丟失。 Redis提供了不同的持久化機制,可以根據需要進行配置。本文將詳細介紹云容器中Redis的持久化配置及其相關配置項。 一、
    的頭像 發表于 12-05 10:07 ?517次閱讀
    主站蜘蛛池模板: 国产69精品久久久久妇女| 国产精品A久久777777| 亚洲中文无码AV在线观看| 久久久精品国产免费A片胖妇女| 操他射他影院| 中文视频在线| 亚洲综合色在线视频久| 一级做a爰片久久毛片潮喷动漫| 午夜免费福利| 同桌上课把奶露出来给我玩| 亚洲AV色香蕉一区二区9255| 无颜之月全集免费观看| 亚洲三级视频在线观看| 亚洲精品成人A8198A片漫画| 无码爽死成人777在线观看网站| 亚洲大片免费看| 亚洲爱视频| 一边吃奶一边添P好爽故事| 2019欧洲hd| 97人妻精品全国免费视频| voyeurhit农村夫妻偷拍| 99久久麻豆AV色婷婷综合| 97SE亚洲国产综合在线| www.伊人| 国产亚洲999精品AA片在线爽| 国产免费不卡| 久久嫩草影院网站| 日本精品在线观看视频| 日本国产精品无码一区免费看| 忘忧草在线影院WWW日本动漫| 亚洲熟女片嫩草影院| 夜色私人影院永久入口| 97人妻久久久精品系列A片| 国产高清精品国语特黄A片| 精品99久久久久成人网站| 欧美高清 videos sexo| 欧美阿v在线免播播放| 天天国产在线精品亚洲| 一区二区三区福利视频| av女优快播| 把腿张开再深点好爽宝贝动态图|