日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

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

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

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

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

   

一個(gè)輕型的任務(wù)隊(duì)列,功能和相關(guān)的broker沒(méi)有celery強(qiáng)大,重在輕型,而且代碼讀起來(lái)也比較的簡(jiǎn)單。 


關(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的時(shí)候,一些cli參數(shù)。 


常用的是:  

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

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

-p --periodic     啟動(dòng)huey worker的時(shí)候,他會(huì)從tasks.py里面找到 需要crontab的任務(wù),會(huì)派出幾個(gè)線(xiàn)程專(zhuān)門(mén)處理這些事情。 

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

--threads   意思你懂的。
1





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


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


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




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




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


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




這個(gè)時(shí)候,我們?cè)趇python再次去嘗試的時(shí)候,會(huì)發(fā)現(xiàn)可以獲取到tasks.py里面的return值了 其實(shí)你在main.py里面獲取的時(shí)候,他還是通過(guò)uuid從redis里面取出來(lái)的。




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


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


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


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


wKioL1QM--mT7Xm-AAPqmSwzRoA504.jpg


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


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

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

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

BaseQueue - 任務(wù)隊(duì)列

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

 


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


main.py




tasks.py




run.sh



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



wKiom1QM_s6S2FseAAMlgrYlP_U022.jpg

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

來(lái)源:模板無(wú)憂(yōu)//所屬分類(lèi):PHP教程/更新時(shí)間:2015-03-16
相關(guān)PHP教程