国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python極其簡單的分布式異步作業(yè)管理系統(tǒng)RQ入門

Chiclaim / 3544人閱讀

摘要:極其簡單的分布式異步作業(yè)管理系統(tǒng)入門什么是直譯過來就是工作,可以是任意的函數(shù),你可以把你想要異步執(zhí)行的任務(wù)都寫成函數(shù)。簡而言之,就是你想執(zhí)行的操作。一個(gè)完整的例子啟動(dòng)運(yùn)行

Python極其簡單的分布式異步作業(yè)管理系統(tǒng)RQ入門 1. 什么是Job?

Job直譯過來就是工作,可以是任意的Python函數(shù),你可以把你想要異步執(zhí)行的任務(wù)都寫成Job函數(shù)。簡而言之,Job就是你想執(zhí)行的操作。例如,我想統(tǒng)計(jì)任意網(wǎng)頁的字符數(shù)量,可以寫一個(gè)這樣的Job函數(shù):

import requests

def count_words(url):
    return len(requests.get(url).text.split())

這樣一個(gè)函數(shù)就可以稱之為Job。

2. 什么是Queue?

當(dāng)我有很多Job時(shí),假如我現(xiàn)在有3個(gè)Job,分別是j1、j2、j3,那么當(dāng)計(jì)算機(jī)要執(zhí)行這些任務(wù)的時(shí)候,會(huì)按照j1、j2、j3加入的順序來執(zhí)行這些Job,這樣的一個(gè)可以忘里面添加Job,并且能夠順序執(zhí)行隊(duì)列稱之為Queue。

例如,我們可以這樣來構(gòu)建一個(gè)Queue:

import redis
from rq import Queue


redis_conn = redis.Redis()
q = Queue("default", connection=redis_conn)  # 第一個(gè)參數(shù)是Queue的名稱,可以不傳,默認(rèn)為default
3. 怎么把Job放到隊(duì)列里面去?
j = q.enqueue(count_words, args=("https://www.baidu.com",))

enqueue第一參數(shù)是Job函數(shù),args是Job函數(shù)的參數(shù),關(guān)鍵字參數(shù)可以通過kwargs傳入。

4. 什么是Worker?

Worker是Job的消費(fèi)者,簡單來說,你把很多Job加入到了Queue,誰來運(yùn)行這些Job呢?當(dāng)然就是Worker啦,你也可以看出Worker必須是獨(dú)立的進(jìn)程,這個(gè)進(jìn)程從Redis里面獲取Job的信息(包括函數(shù)、參數(shù)等等),然后運(yùn)行這個(gè)Job。

啟動(dòng)Worker進(jìn)程也很簡單:

$ 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...

后面的三個(gè)參數(shù)low、high、default,就是這個(gè)Worker將要運(yùn)行哪些Queue里面的Job,這個(gè)順序很重要,排在前面的Queue里面的Job將優(yōu)先被運(yùn)行。

5. 一個(gè)完整的例子

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()

啟動(dòng)Worker:

$ rq worker

運(yùn)行:

$ python app.py

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/40718.html

相關(guān)文章

  • APScheduler任務(wù)調(diào)度利器

    摘要:中任務(wù)調(diào)度一般用中的任務(wù)調(diào)度工具也有不少等。調(diào)度器配置示例方式一方式二三略。移除調(diào)用放到,參數(shù)為調(diào)用實(shí)例的方法注意如果任務(wù)已經(jīng)調(diào)度完畢,并且之后也不會(huì)再被執(zhí)行的情況下,會(huì)被自動(dòng)移除??梢员O(jiān)聽調(diào)度任務(wù)執(zhí)行情況相關(guān)的事件。 Java中任務(wù)調(diào)度一般用Quartz,Python中的任務(wù)調(diào)度工具也有不少:Celery,RQ,APScheduler等。Celery:非常強(qiáng)大的分布式任務(wù)調(diào)度框架RQ...

    Flink_China 評論0 收藏0
  • 重磅 | 完備 AI 學(xué)習(xí)路線,最詳細(xì)資源整理!

    摘要:是你學(xué)習(xí)從入門到專家必備的學(xué)習(xí)路線和優(yōu)質(zhì)學(xué)習(xí)資源。的數(shù)學(xué)基礎(chǔ)最主要是高等數(shù)學(xué)線性代數(shù)概率論與數(shù)理統(tǒng)計(jì)三門課程,這三門課程是本科必修的。其作為機(jī)器學(xué)習(xí)的入門和進(jìn)階資料非常適合。書籍介紹深度學(xué)習(xí)通常又被稱為花書,深度學(xué)習(xí)領(lǐng)域最經(jīng)典的暢銷書。 showImg(https://segmentfault.com/img/remote/1460000019011569); 【導(dǎo)讀】本文由知名開源平...

    荊兆峰 評論0 收藏0
  • Algorithms, Princeton, Coursera課程整理與回顧

    摘要:除特別標(biāo)注外,文章非原創(chuàng)插圖全部來自課程相關(guān)資源。劇透預(yù)警內(nèi)容包含大作業(yè)的關(guān)鍵問題解法分析。為的返回值此方案下,判斷只需要對應(yīng),判斷使用結(jié)果準(zhǔn)確,判斷檢測的對應(yīng)是否為。更新此方法已確定違反的。 Princeton的算法課是目前為止我上過的最酣暢淋漓的一門課,得師如此夫復(fù)何求,在自己的記憶徹底模糊前,愿對這其中一些印象深刻的點(diǎn)做一次完整的整理和回顧,以表敬意。 注:這是一篇更關(guān)注個(gè)人努力...

    Luosunce 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<