溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

rpop方法怎么在python分布式爬蟲中使用

發(fā)布時(shí)間:2020-11-30 10:21:15 來源:億速云 閱讀:238 作者:小新 欄目:編程語言

這篇文章主要介紹rpop方法怎么在python分布式爬蟲中使用,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

下面的代碼是消費(fèi)端爬蟲程序的示例

import time
import redis
 
 
r = redis.Redis(host='127.0.0.1', port=6379,
                password='yourpassword', db=1)
 
# 爬蟲程序
def crawl(task):
    print('爬取url {task}'.format(task=task))
    time.sleep(1)
 
 
while True:
    task = r.rpop('url_queue')
    if not task:
        time.sleep(1)
        continue
 
crawl(task)

爬蟲程序要不停的使用rpop方法從redis的隊(duì)列中拉取數(shù)據(jù)進(jìn)行爬取,考慮到生產(chǎn)者隨時(shí)都可能寫入新的任務(wù),因此,必須使用死循環(huán),得不到消息時(shí),sleep一段時(shí)間,繼續(xù)獲取消息。

關(guān)于部署

生產(chǎn)端的程序,消費(fèi)端的程序可以隨意部署,但不管如何,都要確保這些機(jī)器與redis所在的機(jī)器是網(wǎng)絡(luò)連通的,因?yàn)樗麄円粋€(gè)要寫消息到redis,一個(gè)要從redis拉取任務(wù),至于生產(chǎn)端和消費(fèi)端是否網(wǎng)絡(luò)連通則沒有任何必要,甚至同一端的worker之間也不必網(wǎng)絡(luò)連通

數(shù)據(jù)存儲(chǔ)

消費(fèi)端的worker在爬取數(shù)據(jù)以后,可以根據(jù)實(shí)際需要決定是否直接落庫(kù),如果需要對(duì)數(shù)據(jù)進(jìn)行規(guī)范化處理或是其他操作,則可以寫入新的消息隊(duì)列中,由下一個(gè)工序的worker拉取數(shù)據(jù)進(jìn)行處理

以上是“rpop方法怎么在python分布式爬蟲中使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI