并行获取文件
Posted
技术标签:
【中文标题】并行获取文件【英文标题】:Parallel fetching of files 【发布时间】:2012-02-18 22:00:33 【问题描述】:为了下载文件,我正在创建一个 urlopen 对象(urllib2 类)并分块读取它。
我想多次连接到服务器并在六个不同的会话中下载文件。这样做,下载速度应该会更快。许多下载管理器都有此功能。
我考虑在每个会话中指定我想下载的文件部分,并以某种方式同时处理所有会话。我不确定如何实现这一目标。
【问题讨论】:
【参考方案1】:关于运行并行请求,您可能希望使用urllib3 或requests。
我花了一些时间列出了类似的问题:
寻找[python] +download +concurrent
给出了这些有趣的:
寻找[python] +http +concurrent
会得到这些:
寻找[python] +urllib2 +slow
:
寻找[python] +download +many
:
map
that works on threads
Rotating Proxies for web scraping
Anyone know of a good Python based web crawler that I could use?
【讨论】:
【参考方案2】:听起来您想使用一种可用的HTTP Range。
编辑更新了指向 w3.org 存储的 RFC 的链接
【讨论】:
感谢您提及这一点 - 更新了指向 w3.org RFC 的链接,该链接应该不那么短暂。【参考方案3】:正如我们已经讨论过的那样,我使用 PycURL 制作了这样一个。
我必须做的一件事,也是唯一一件事是pycurl_instance.setopt(pycurl_instance.NOSIGNAL, 1)
以防止崩溃。
我确实使用 APScheduler 在单独的线程中触发请求。感谢您在主线程中将忙等待 while True: pass
更改为 while True: time.sleep(3)
的建议,代码表现得非常好,并且使用 python-daemon 包应用程序中的 Runner 模块几乎可以用作典型的 UN*X 守护程序。
【讨论】:
以上是关于并行获取文件的主要内容,如果未能解决你的问题,请参考以下文章
HTML filepicker multi - 获取正在使用的文件