为了下载文件,我正在创建一个urlopen对象(urllib2类)并以块的形式读取它。
我想多次连接到服务器并在六个不同的会话中下载文件。这样做,下载速度应该更快。许多下载管理器都有此功能。
我考虑过指定我想在每个会话中下载的文件部分,并以某种方式同时处理所有会话。我不确定如何实现这一点。
答案 0 :(得分:24)
关于运行并行请求,您可能需要使用urllib3或requests。
我花了一些时间来列出类似的问题:
寻找[python] +download +concurrent
给出了这些有趣的内容:
寻找[python] +http +concurrent
给出了这些:
寻找[python] +urllib2 +slow
:
寻找[python] +download +many
:
答案 1 :(得分:3)
听起来你想使用可用的HTTP Range之一。
编辑更新链接以指向w3.org存储的RFC
答案 2 :(得分:3)
正如我们一直在谈论的那样,我使用PycURL制作了这个。
我必须做的唯一一件事就是pycurl_instance.setopt(pycurl_instance.NOSIGNAL, 1)
以防止崩溃。
我确实使用APScheduler在单独的线程中触发请求。感谢您在主线程中将忙碌等待while True: pass
更改为while True: time.sleep(3)
的建议,代码表现得相当不错,并且使用来自python-daemon包应用程序的Runner模块几乎可以用作典型的UN * X守护进程。