0
爲了給出一些背景知識,我正在寫一個蜘蛛,在RabbitMQ主題上偵聽新的網址以供蜘蛛使用。當它從隊列中拉出一個URL時,它會通過調用crawler.engine.crawl(request)將它添加到爬行隊列中。我注意到,如果我將200個URL放到隊列中(全部用於同一個域),我有時會超時,但是如果我通過start_urls屬性添加200個URL,則不會發生這種情況。在scrapy中調用crawler.engine.crawl()是否繞過了限制機制?
所以我想知道是否正常的節流機制(每個域的併發請求,延遲等)適用於通過crawler.engine.crawl()添加網址時?
這裏是一個小的代碼示例:
@defer.inlineCallbacks
def read(self, queue_object):
# pull a url from the RabbitMQ topic
ch,method,properties,body = yield queue_object.get()
if body:
req = Request(url=body)
log.msg('Scheduling ' + body + ' for crawl')
self.crawler.engine.crawl(req, spider=self)
yield ch.basic_ack(delivery_tag=method.delivery_tag)
謝謝,我實際上並沒有繞過start_requests我有一個單獨的task.LoopingCall()基本上輪詢兔子隊列並調用crawler.engine.crawl() – 2014-10-31 15:16:16