国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

python的分布式任務huey如何實現異步化任務講解

2024-05-04 21:55:20
字體:
來源:轉載
供稿:網友

 本文我們來分享一個python的輕型的任務隊列程序,他可以讓python的分布式任務huey實現異步化任務,感興趣的朋友可以看看。

  

一個輕型的任務隊列,功能和相關的broker沒有celery強大,重在輕型,而且代碼讀起來也比較的簡單。 


關于huey的介紹:  (比celery輕型,比mrq、rq要好用 !)

a lightweight alternative.

    written in python

    no deps outside stdlib, except redis (or roll your own backend)

    support for django

supports:

    multi-threaded task execution

    scheduled execution at a given time

    periodic execution, like a crontab

    retrying tasks that fail

    task result storage


安裝:




關于huey的api,下面有詳細的介紹及參數介紹的。




juey作為woker的時候,一些cli參數。 


常用的是:  

-l                  關于日志文件的執行 。

-w                 workers的數目,-w的數值大了,肯定是增加任務的處理能力

-p --periodic     啟動huey worker的時候,他會從tasks.py里面找到 需要crontab的任務,會派出幾個線程專門處理這些事情。 

-n                  不啟動關于crontab里面的預周期執行,只有你觸發的時候,才會執行周期星期的任務。 

--threads   意思你懂的。
1





任務隊列huey 是靠著redis來實現queue的任務存儲,所以需要咱們提前先把redis-server和redis-py都裝好。 安裝的方法就不說了,自己搜搜吧。 


我們首先創建下huey的鏈接實例 :


然后就是關于任務的,也就是你想讓誰到任務隊列這個圈子里面,和celey、rq,mrq一樣,都是用tasks.py表示的。




再來一個真正去執行的 。  main.py 相當于生產者,tasks.py相當于消費者的關系。  main.py負責喂數據。




和celery、rq一樣,他的結果獲取是需要在你的config.py或者主代碼里面指明他的存儲的方式,現在huey還僅僅是支持redis,但相對他的特點和體積,這已經很足夠了 !


只是那幾句話而已,導入RedisDataStore庫,申明下存儲的地址。




這個時候,我們在ipython再次去嘗試的時候,會發現可以獲取到tasks.py里面的return值了 其實你在main.py里面獲取的時候,他還是通過uuid從redis里面取出來的。




huey也是支持celey的延遲執行和crontab的功能 。  這些功能很是重要,可以自定義的優先級或者不用再借助linux本身的crontab。


用法很簡單,多加一個delay的時間就行了,看了下huey的源碼,他默認是立馬執行的。當然還是要看你的線程是否都是待執行的狀態了。


python的分布式任務huey如何實現異步化任務講解   武林網


再來一個重試retry的介紹,huey也是有retry,這個很是實用的東西。 如果大家有看到我的上面文章關于celery重試機制的介紹,應該也能明白huey是個怎么個回事了。  是的,他其實也是在tasks里具體函數的前面做了裝飾器,裝飾器里面有個func try 異常重試的邏輯 。 大家懂的。


wKioL1QM--mT7Xm-AAPqmSwzRoA504.jpg


huey是給你反悔的機會餓 ~  也就是說,你做了deley的計劃任務后,如果你又想取消,那好看,直接revoke就可以了。


task() - 透明的裝飾器,讓你的函數變得優美點。 

periodic_task() - 這個是周期性的任務

crontab() - 啟動worker的時候,附帶的crontab的周期任務。 

BaseQueue - 任務隊列

BaseDataStore - 任務執行后,可以把 結果塞入進去。  BAseDataStore可以自己重寫。

 


官方的huey的git庫里面是提供了相關的測試代碼的: 


main.py




tasks.py




run.sh



咱們可以先clone下huey的代碼庫。 里面有個examples例子目錄,可以看到他是支持django的,但是這不是重點 !



wKiom1QM_s6S2FseAAMlgrYlP_U022.jpg

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青铜峡市| 栾城县| 韩城市| 海淀区| 渑池县| 台州市| 陈巴尔虎旗| 全州县| 扶绥县| 丹江口市| 德惠市| 扶风县| 仁布县| 斗六市| 阳泉市| 兰州市| 河源市| 揭东县| 密云县| 德安县| 漳平市| 闻喜县| 天峻县| 崇阳县| 大庆市| 习水县| 承德市| 永定县| 蒙阴县| 图木舒克市| 西吉县| 江北区| 新竹市| 承德县| 南通市| 塘沽区| 衡南县| 光山县| 汤阴县| 舟曲县| 九江市|