Redis隊列最佳實踐
Redis隊列簡單應用-Python
@[redis|隊列|非同步任務|python]
大家通常會有這樣需求,當我在一個web api中我想要去發送一個郵件,發送一個簡訊, 下發一個特別耗時的任務的時候,往往想到的是建一個celery吧,今天來說一下自己寫一個簡單redis隊列非同步任務worker。
Redis隊列模式介紹
Redis的隊列模式有兩種應用:
生產消費模式:N個worker同時搶任務,適用於發郵件,發簡訊
訂閱發布模式:N個worker同時都得到這個任務,適用於一個數據要存到多個地方去
生產消費者模式
這個用的是redis的 和 具體的邏輯看代碼
worker端 (work.py):
client端 (client.py):
執行 我啟動了兩個worker 然後client發送了10次任務, 輸出如下:
發布訂閱模式
這裡使用的是Redis 的功能
worker端 (worker.py):
client端 (client.py):
執行 我啟動了兩個worker 然後client發送了3次任務, 輸出如下:
尾巴
有的時候,發送郵件之類的需求,其實並不需要去等待處理的結果如何,非同步任務往往是最佳的選擇。當你不想上之類的框架,或者你的事情特別簡單的話,可以嘗試這種方式去做這樣一個簡單的worker。
關於部署,推薦使用之類的工具,啟動多個或者管理狀態都是極好的。
關於穩定性,線上的推送/郵件/簡訊,都是基於這個在跑著,大半年了沒出過狀況,但只是我的場景實踐,僅供參考。
如果你還需要知道執行的結果和監控任務執行的進度的話,想必是極好的。
最近熱文:
1、邀你參加11期 程序員專場相親活動
2、PHP高工/架構師,18-50K,深圳南山
3、JAVA/Web前端,深圳前海,15-30K
4、如何判斷是否到了該辭職的時候?
※當寫爛代碼的人離職之後
※推薦大家使用的CSS書寫規範、順序
※Go 語言 HTTP Server 源碼分析
TAG:程序源 |
※被視為代替Kafka的消息隊列:Apache Pulsar設計簡介
※React、頁面渲染、任務隊列、Node.js
※消息隊列CKafka
※進程間的通信 IPC——實現消息隊列(msg)
※簡析Python中的四種隊列
※分散式隊列神器 Celery
※RabbitMQ 高級篇八 消費端ACK與重回隊列
※Rocketmq之消息隊列分配策略演算法實現的源碼分析
※RabbitMQ高級篇九TTL設置隊列或消息有效期隊列及消息
※用於腹側疝修復的改良Chevrel技術:單個中心隊列的長期結果
※kafka消息隊列學習整理
※Nature:氣勢磅礴!中國最大出生隊列研究碩果累累,引國際「圍觀」
※日常生活中的膳食蛋白質來源和肌肉質量 「Lifelines」 隊列研究
※linux內核對網卡驅動多隊列的支持
※RabbitMQ消息中間件技術精講17 高級篇十 死信隊列
※Linux 下的進程間通信:使用管道和消息隊列
※List順序表,鏈表隊列,棧,字典
※糞鈣衛蛋白和內鏡下UCEIS評分預測急性重症UC的短期結局:前瞻性隊列研究
※攝影師意外拍到G27K清晰照 德軍KSK特種部隊列裝新型步槍
※消息隊列 MQ 專欄