问题介绍:
我有一个代理ip池,大约有1000个ip,放在自己定义的MyCustomProxyMiddleware中:
def process_request(self, request, spider):
proxy_address = random.choice(self.proxies)
request.meta['proxy'] = proxy_address
def process_exception(self, request, exception, spider):
proxy = request.meta['proxy']
log.msg('Removing failed proxy <%s>, %d proxies left' % (
proxy, len(self.proxies)))
try:
del self.proxies
except ValueError:
pass
我设置DOWNLOAD_TIMEOUT = 1200
问题:
运行后出现:TCP connection time out 10086.
补充:
如果用本机ip不会出现这个问题。
自己的理解:
每次request请求,都会在代理ip池中自由选择一个ip,但是如果这时ip出现问题,此次请求便会超时,难道不会在ip池中再选一个ip进行连接吗?
和DOWNLOAD_TIMEOUT的设置有关吗?
1200秒的时间太长了,
建议看看文档中settings的这个几个选项
RETRY_ENABLED
RETRY_HTTP_CODES
RETRY_TIMES