欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

python的分布式任務(wù)huey如何實現(xiàn)異步化任務(wù)講解_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:python的multiprocessing多進(jìn)程通信的pipe和queue介紹
python的multiprocessing提供了IPC(Pipe和Queue),使Python多進(jìn)程并發(fā),效率上更高。本文我們就來詳細(xì)介紹一下pipe和queue。 這兩天溫故了python的multiprocessing多進(jìn)程模塊,看到的pipe和queue這兩種ipc方式,啥事ipc? ipc就是進(jìn)程間的通信模式,常用的一半是socke,

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

   

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


關(guān)于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


安裝:




關(guān)于huey的api,下面有詳細(xì)的介紹及參數(shù)介紹的。




juey作為woker的時候,一些cli參數(shù)。 


常用的是:  

-l                  關(guān)于日志文件的執(zhí)行 。

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

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

-n                  不啟動關(guān)于crontab里面的預(yù)周期執(zhí)行,只有你觸發(fā)的時候,才會執(zhí)行周期星期的任務(wù)。 

--threads   意思你懂的。
1





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


我們首先創(chuàng)建下huey的鏈接實例 :


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




再來一個真正去執(zhí)行的 。  main.py 相當(dāng)于生產(chǎn)者,tasks.py相當(dāng)于消費者的關(guān)系。  main.py負(fù)責(zé)喂數(shù)據(jù)。




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


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




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




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


用法很簡單,多加一個delay的時間就行了,看了下huey的源碼,他默認(rèn)是立馬執(zhí)行的。當(dāng)然還是要看你的線程是否都是待執(zhí)行的狀態(tài)了。


python的分布式任務(wù)huey如何實現(xiàn)異步化任務(wù)講解   模板無憂


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


wKioL1QM--mT7Xm-AAPqmSwzRoA504.jpg


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


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

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

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

BaseQueue - 任務(wù)隊列

BaseDataStore - 任務(wù)執(zhí)行后,可以把 結(jié)果塞入進(jìn)去。  BAseDataStore可以自己重寫。

 


官方的huey的git庫里面是提供了相關(guān)的測試代碼的: 


main.py




tasks.py




run.sh



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



wKiom1QM_s6S2FseAAMlgrYlP_U022.jpg

分享:php列出mysql表所有行與列的方法
這篇文章主要介紹了php列出mysql表所有行和列的方法,涉及php操作mysql數(shù)據(jù)庫的技巧,具有一定參考借鑒價值,需要的朋友可以參考下 本文實例講述了php列出mysql表所有行和列的方法。分享給大家供大家參考。具體實現(xiàn)方法如下: 代碼如下:html head titleSelecting Data/tit

來源:模板無憂//所屬分類:PHP教程/更新時間:2015-03-16
相關(guān)PHP教程