我正在使用 gevent 下载一些 html 页面。有些网站太慢了,有些网站在一段时间后停止服务请求。这就是为什么我必须限制我提出的一组请求的总时间。为此,我使用 gevent“超时”。
timeout = Timeout(10)
timeout.start()
def downloadSite():
# code to download site's url one by one
url1 = downloadUrl()
url2 = downloadUrl()
url3 = downloadUrl()
try:
gevent.spawn(downloadSite).join()
except Timeout:
print 'Lost state here'
但它的问题是当异常触发时我会失去所有状态。
想象一下我抓取网站“www.test.com”。在站点管理员决定切换网络服务器进行维护之前,我已经设法下载了 10 个 URL。在这种情况下,当异常触发时,我将丢失有关已抓取页面的信息。
问题是 - 即使发生超时,我如何保存状态和处理数据?