您好,登錄后才能下訂單哦!
這篇文章主要介紹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è)資訊頻道!
免責(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)容。