50行Python代碼實現簡單的任務隊列
當你的項目需要一個任務隊列時,當然你會先想到celery,然後你花了三個月弄懂了基本的配置選項,你覺得已經生無可戀了。也許你可以使用簡單一點的任務隊列,如huey和rq。
或者,你自己寫一個如何?你能做到的!
首先,我們使用redis作為消息的存儲組件。我們不需要單獨安裝redis,我們用docker來獲取一個redis。打開終端,然後運行
對,你做到了。然後我們創建一個Python虛擬環境來管理依賴庫。我們需要redis的Python鏈接庫和dill。
很好。我們的代碼使用dill來把要執行的函數序列化為一個任務,然後存儲到redis中。
客戶端部分(任務隊列的客戶端,不是APP)
客戶端把消息發送到任務隊列中。打開一個編輯器,創建一個名為client.py的文件。然後我們定義要發送給worker(工作者進程)的任務,例如:
現在我們需要配置我們的redis客戶端:
這些都完成後,我們開始生產一些任務,並且把它推送到任務隊列中
工作者進程
工作者進程實際地完成任務。它們就是盯著消息隊列,隊列中有任務了就抓取下來,把任務完成,然後告訴隊列我完成了,刪除這個任務吧。就這麼簡單。打開編輯器,創建一個名為worker.py的文件,然後輸入下面內容:
你已經完成了所以的代碼,運行這個工作者進程吧:
你甚至可以在其他機器上運行,任務隊列是天生支持分布式的。然後再運行客戶端創造一些任務:
50行代碼都不到,是不是很佩服自己?
英文原文:
https://github.com/JoseTomasTocino/yotaq
譯者:詩書塞外
※四個 Python 庫,實現超實用的命令行功能
※Windows上Python2與Python3 共存
※Python語言在未來的發展前景
※用 Python 做股市數據分析(一)
TAG:Python |
※10行Python代碼實現語音識別
※給數據科學家的 Python 3 指導;簡單 chatbot 代碼實現
※一行代碼實現底部導航欄TabLayout
※這5小段代碼輕鬆實現數據可視化(Python+Matplotlib)
※任務調度並行演算法的Python簡單實現
※Github 代碼實踐:Pytorch 實現的語義分割器
※Github代碼實踐:Pytorch實現的語義分割器
※用PyTorch 0.4 實現的 YoloV3
※GAN如此簡單的PyTorch實現,一張臉生成72種表情(附代碼)
※比Python快100倍,利用spaCy和Cython實現高速NLP項目
※Andrew Ng經典機器學習課程的Python實現2
※android 訪問webservice(解析一行代碼實現)
※用Numpy 實現簡單的 GAN
※Pytorch實現CNN時間序列預測
※TensorFlow實現StarGAN代碼全部開源,1天訓練完
※用Python 實現的機器人演算法示例集合——PythonRobotics
※基於Netty的Android系統IM簡單實現原理
※Python yield與實現
※Apache+Tomcat實現單機多網站部署
※單線程實現同時監聽多個埠(windows平台c++代碼)