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

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

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

       本文我們來分享一個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

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

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