我正在尝试从中间件暂停scrapy引擎(运行crawler)。
当我试着打电话的时候自爬虫引擎.unpause()我收到此错误:
“cRetry”对象没有属性“crawler”
这是我的中间件。如何访问爬虫对象?
class cRetry(RetryMiddleware):
errorCounter = 0
def process_response(self, request, response, spider):
if response.status in self.retry_http_codes:
reason = response_status_message(response.status)
return self._retry(request, reason, spider) or response
elif "error" in response.body:
self.errorCounter = self.errorCounter + 1
if self.errorCounter >= 10:
self.crawler.engine.pause()
os.system("restart.sh")
print "Reset"
time.sleep(10)
self.crawler.engine.unpause()
self.errorCounter = 0
reason ="Restart Required"
return self._retry(request, reason, spider) or response
### end
return response
根据我的理解,您可以重写
__init__
和from_crawler
方法,类似于:__init__
的签名实际上似乎并不重要,entry point for the main library始终是{谢谢aufziehvogel:—)
你的建议有点小意思。@需要添加classmethod,然后它就像一个魅力一样工作。在
相关问题 更多 >
编程相关推荐