色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美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次閱讀
    主站蜘蛛池模板: 2020亚洲 欧美 国产 日韩| 手机在线成人精品视频网| 欧美xx69| 亚洲人成网站在线观看90影院| yellow免费观看直播| 老师那里好大又粗h男男| 亚洲精品久久7777777| 国产爱豆果冻传媒在线观看| 全免费a级毛片免费看| 99视频福利| 女教师二十三歳| jiz中国zz| 女性性纵欲派对| np高h肉文| 日韩精品 电影一区 亚洲高清| GAY东北澡堂激情2022| 桥本有菜护士| 丰满饥渴老太性hd| 无限资源在线看影院免费观看| 高H内射NP古文| 无限资源在线完整高清观看1| 国产精品久久久久久人妻精品蜜桃| 天天看片视频免费观看| 国产偷国产偷亚州清高| 亚洲精品无码AV中文字幕蜜桃| 精品无码国产AV一区二区三区| 印度性hd18| 牛牛在线精品视频| 大屁股国产白浆一二区| 小舞被爆操| 久久 这里只精品 免费| 在线亚洲97se| 欧美14videosex性欧美成人| 朝鲜女人性猛交| 亚洲1卡二卡3卡4卡新区在线| 精品国产在天天线在线麻豆| 竹菊精品久久久久久久99蜜桃| 欧美日韩永久久一区二区三区| 大陆老太交xxxxxhd在线| 亚洲黄色在线视频| 奶头被客人吸得又红又肿|