我是 python 的新手,甚至是 twisted 的新手。我正在尝试使用twisted 来下载几十万个文件,但在尝试添加错误反馈时遇到了麻烦。如果下载失败,我想打印错误的 url。为了抛出错误,我故意拼错了我的一个网址。但是,我刚刚挂起的代码并且 python 没有完成(如果我删除 errback 调用,它会很好地完成)。
另外,如何单独处理每个文件?据我了解,当一切完成时,就会调用“完成”。我想在下载每个文件时对其进行 gzip 压缩,以便将其从内存中删除。
这是我所拥有的:
urls = [
'http://www.python.org',
'http://stackfsdfsdfdsoverflow.com', # misspelled on purpose to generate an error
'http://www.twistedmatrix.com',
'http://www.google.com',
'http://launchpad.net',
'http://github.com',
'http://bitbucket.org',
]
def finish(results):
for result in results:
print 'GOT PAGE', len(result), 'bytes'
reactor.stop()
def print_badurls(err):
print err # how do I just print the bad url????????
waiting = [client.getPage(url) for url in urls]
defer.gatherResults(waiting).addCallback(finish).addErrback(print_badurls)
reactor.run()