使用 python 快速扩展缩短的 URL

Fast expansion of shortened URLs using python

我正在编写 Python 代码来扩展从 Twitter 获取的缩短的 URL。我已获取所有 URL 并将它们存储在一个由换行符分隔的文本文件中。

目前我正在使用:

response = urllib2.urlopen(url)
return response.url

扩展它们。

但是urlopen()方法在扩展网址方面似乎不是很快。

我有大约 540 万个 URL。有没有更快的方法来使用 Python 扩展它们?

我怀疑问题是网络调用速度慢并且 urllib 阻塞直到它得到响应。因此,例如,假设从 URL 缩短服务获得响应需要 200 毫秒,那么您将只能使用 urllib 解析 5 URLs/second。但是,如果您使用异步库,您应该能够在获得第一个答案之前发送大量请求。然后在响应返回到您的代码时对其进行处理。这应该会显着提高您的吞吐量。对于这种东西(Twisted、gevent 等)有一些 Python 库,因此您可能只想 Google 用于 "Python async rest"。

您也可以尝试使用大量线程来执行此操作(我认为 urllib2 会在等待响应时释放 GIL,但不确定)。这不会像异步一样快,但仍然可以加快速度。

这两种解决方案都引入了相当多的复杂性,但如果您想快速进行...