我正在使用gevent下载一些HTML页面。 有些网站速度非常慢,有些在一段时间后停止服务请求。这就是为什么我不得不限制我发出的请求组的总时间。为此,我使用gevent的“Timeout”。
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'。在网站管理员决定切换Web服务器进行维护之前,我已经成功下载了10个URL。在这种情况下,当异常出现时,我将失去关于爬取页面的信息。
问题是 - 即使超时发生,我该如何保存状态并处理数据?