摘要:極其簡單的分布式異步作業管理系統入門什么是直譯過來就是工作,可以是任意的函數,你可以把你想要異步執行的任務都寫成函數。簡而言之,就是你想執行的操作。一個完整的例子啟動運行
Python極其簡單的分布式異步作業管理系統RQ入門 1. 什么是Job?
Job直譯過來就是工作,可以是任意的Python函數,你可以把你想要異步執行的任務都寫成Job函數。簡而言之,Job就是你想執行的操作。例如,我想統計任意網頁的字符數量,可以寫一個這樣的Job函數:
import requests def count_words(url): return len(requests.get(url).text.split())
這樣一個函數就可以稱之為Job。
2. 什么是Queue?當我有很多Job時,假如我現在有3個Job,分別是j1、j2、j3,那么當計算機要執行這些任務的時候,會按照j1、j2、j3加入的順序來執行這些Job,這樣的一個可以忘里面添加Job,并且能夠順序執行隊列稱之為Queue。
例如,我們可以這樣來構建一個Queue:
import redis from rq import Queue redis_conn = redis.Redis() q = Queue("default", connection=redis_conn) # 第一個參數是Queue的名稱,可以不傳,默認為default3. 怎么把Job放到隊列里面去?
j = q.enqueue(count_words, args=("https://www.baidu.com",))
enqueue第一參數是Job函數,args是Job函數的參數,關鍵字參數可以通過kwargs傳入。
4. 什么是Worker?Worker是Job的消費者,簡單來說,你把很多Job加入到了Queue,誰來運行這些Job呢?當然就是Worker啦,你也可以看出Worker必須是獨立的進程,這個進程從Redis里面獲取Job的信息(包括函數、參數等等),然后運行這個Job。
啟動Worker進程也很簡單:
$ rq worker low high default 16:56:02 RQ worker "rq:worker:s2.6443" started, version 0.8.1 16:56:02 Cleaning registries for queue: low 16:56:02 Cleaning registries for queue: high 16:56:02 Cleaning registries for queue: default 16:56:02 16:56:02 *** Listening on low, high, default...
后面的三個參數low、high、default,就是這個Worker將要運行哪些Queue里面的Job,這個順序很重要,排在前面的Queue里面的Job將優先被運行。
5. 一個完整的例子jobs.py
import requests import redis from rq import Queue def count_words(url): return len(requests.get(url).text.split()) def get_q(): redis_conn = redis.Redis() return Queue(connection=redis_conn)
app.py
from jobs import get_q, count_words def run(): q = get_q() j = e.enqueue(count_words, "https://www.baidu.com") print(j.result) if __name__ == "__main__": run()
啟動Worker:
$ rq worker
運行:
$ python app.py
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40718.html
摘要:中任務調度一般用中的任務調度工具也有不少等。調度器配置示例方式一方式二三略。移除調用放到,參數為調用實例的方法注意如果任務已經調度完畢,并且之后也不會再被執行的情況下,會被自動移除。可以監聽調度任務執行情況相關的事件。 Java中任務調度一般用Quartz,Python中的任務調度工具也有不少:Celery,RQ,APScheduler等。Celery:非常強大的分布式任務調度框架RQ...
摘要:是你學習從入門到專家必備的學習路線和優質學習資源。的數學基礎最主要是高等數學線性代數概率論與數理統計三門課程,這三門課程是本科必修的。其作為機器學習的入門和進階資料非常適合。書籍介紹深度學習通常又被稱為花書,深度學習領域最經典的暢銷書。 showImg(https://segmentfault.com/img/remote/1460000019011569); 【導讀】本文由知名開源平...
摘要:除特別標注外,文章非原創插圖全部來自課程相關資源。劇透預警內容包含大作業的關鍵問題解法分析。為的返回值此方案下,判斷只需要對應,判斷使用結果準確,判斷檢測的對應是否為。更新此方法已確定違反的。 Princeton的算法課是目前為止我上過的最酣暢淋漓的一門課,得師如此夫復何求,在自己的記憶徹底模糊前,愿對這其中一些印象深刻的點做一次完整的整理和回顧,以表敬意。 注:這是一篇更關注個人努力...
閱讀 2953·2023-04-26 01:32
閱讀 1548·2021-09-13 10:37
閱讀 2286·2019-08-30 15:56
閱讀 1678·2019-08-30 14:00
閱讀 3052·2019-08-30 12:44
閱讀 1968·2019-08-26 12:20
閱讀 1068·2019-08-23 16:29
閱讀 3233·2019-08-23 14:44