我创建了一个网络爬虫,可以访问美国和欧洲服务器。这两个服务器具有相同的数据结构,但其中包含不同的数据,我想要整合所有数据。为了对服务器友好,每次请求之间都有等待时间。由于程序完全相同,为了加快处理速度,我已经将程序线程化,以便同时访问欧洲和美国的服务器。
这个爬取过程需要几周的时间,而不是几天。可能会出现异常情况,虽然我已经尝试在程序内部处理所有问题,但可能会出现一些奇怪的问题。为了真正防御这种情况,我想捕获一个失败的线程,记录错误并重新启动它。最坏的情况是我失去了成千上万个页面中的一小部分,这比线程失败并且失去50%的速度要好。然而,据我所知,Python线程会默默地死亡。有人有什么想法吗?
这个爬取过程需要几周的时间,而不是几天。可能会出现异常情况,虽然我已经尝试在程序内部处理所有问题,但可能会出现一些奇怪的问题。为了真正防御这种情况,我想捕获一个失败的线程,记录错误并重新启动它。最坏的情况是我失去了成千上万个页面中的一小部分,这比线程失败并且失去50%的速度要好。然而,据我所知,Python线程会默默地死亡。有人有什么想法吗?
class AccessServer(threading.Thread):
def __init__(self, site):
threading.Thread.__init__(self)
self.site = site
self.qm = QueueManager.QueueManager(site)
def run(self):
# Do stuff here
def main():
us_thread = AccessServer(u"us")
us_thread.start()
eu_thread = AccessServer(u"eu")
eu_thread.start()
run
方法中加入try: except:
,这似乎是一个不错的、Pythonic的做法。谢谢! - cflewis