-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
下载速度问题 #61
Comments
谢谢建议,看你说的数据,速度改进很明显。 |
感觉也很可能是来回交互的时间占据太多时间。后来用curl试了下,速度有个明显的攀升过程,可能默认的1M分片太小,时间都耗费在交互上。不过我改成1G,一直没开始下载,也不清楚是不是其他问题。 |
之前就是发送一次请求,程序一直接收。但几个人都反应过速度不稳定,刚开始还行,但到后来就几乎卡住,特别是网络不稳定的时候。后来就改成了这种分片下载的方式,应该是解决了会卡住的问题,不过这个下载速度似乎一直不怎么理想。如果怀疑是因为下载分片太小所至,你可以通过--chunk 2014-07-07 22:21 GMT+08:00 noxplus notifications@github.com:
|
--chunk参数对速率几乎没什么提升, 看起来是几k ~ 几十k的样子 |
听起来快不少。用wget/curl时用Range header了吗? 2014-07-08 10:05 GMT+08:00 noxplus notifications@github.com:
|
前一个回复里提到的速率是在树莓派上用curl/wget测试的, 没加range hander. |
写文件应该不会是瓶颈,很简单的一个文件写入。。 2014-07-08 16:07 GMT+08:00 noxplus notifications@github.com:
|
电脑工具上传大致50k/s, 百度云web界面大致200k/s. 也比较慢 确认下, 是不是这个流程: 如果是这个流程, 可以优化下, 不过具体怎么优化还得考虑... |
嗯,大概流程就是这样,其中包含网络传输出错的重试逻辑。 |
我现在有点怀疑我的代码里面是不是有资源泄露,导致网络传输受阻。。 |
真的很好用哦,感谢houtianze!不过我可以贴一些日志吗?我也不懂。只是在syncup -v 的过程中,发现时不时会断掉?我不懂代码... 不知道有没有帮助。 Error accessing 'https://c.pcs.baidu.com/rest/2.0/pcs/file' Traceback (most recent call last): File "/root/Studio/python/bypy/bypy.py", line 958, in __request_work params = parsnew, timeout = self.__timeout, verify = False, *_kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 88, in post return request('post', url, data=data, *_kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request return session.request(method=method, url=url, *_kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 456, in request resp = self.send(prep, *_send_kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 559, in send r = adapter.send(request, *_kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 382, in send raise SSLError(e, request=request) SSLError: The write operation timed out [17:26:45] Function: __upload_slice_act [17:26:45] Website parameters: {u'type': u'tmpfile', u'method': u'upload'} [17:26:45] Waiting 10 seconds before retrying... [17:26:55] Request Try #2 / 5 [17:34:28] Error accessing 'https://c.pcs.baidu.com/rest/2.0/pcs/file' Traceback (most recent call last): File "/root/Studio/python/bypy/bypy.py", line 958, in __request_work params = parsnew, timeout = self.__timeout, verify = False, *_kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 88, in post return request('post', url, data=data, *_kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request return session.request(method=method, url=url, *_kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 456, in request resp = self.send(prep, *_send_kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 559, in send r = adapter.send(request, *_kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 382, in send raise SSLError(e, request=request) SSLError: The write operation timed out [17:34:28] Function: __upload_slice_act [17:34:28] Website parameters: {u'type': u'tmpfile', u'method': u'upload'} [17:34:28] Waiting 20 seconds before retrying... [17:34:48] Request Try #3 / 5 [17:36:07] |
网络超时,应该是网络不太稳定。如果没有中途断掉,影响不是很大。 |
抓包看了一下
估计可能是由于错误的参数导致requests产生了这样的header。
根据这个试了几个header组合,发现把User-Agent去掉后,速度就上来了,原因不明。 另外,下载时Range每次只有1M,比较影响效率。我觉得应该在requests.get()时使用stream=True参数,Range只用来续传或多线程下载 |
厉害,这个拖了N久未能解决的下载慢的问题被你找到原因了,谢。 |
考虑把1M改成10M。以前是用stream=True来做的,不过有人反映似乎下载大文件的时候网络不稳定的时候会卡住,后来就改成现在的下载方式了。不知道你有没有什么更好的解决方案? |
#8 |
嗯,应该是这个。 On Wed, Jul 16, 2014 at 6:25 PM, seanlis notifications@github.com wrote:
|
https://github.com/kennethreitz/requests/pull/1935 |
佩服你的调试出错能力,原来还真是request库的问题啊。。 |
其实这主要是google知道的多:-) |
超时会有socket signal?不过拦到了signal,要重试request好像也不简单。。都有点后悔用requests了,Python内置的那个httplib还是urllib估计比requests还是健壮一点。 |
貌似最好的方案还是直接拉最新的requests到源码库里面然后用回旧的下载函数。不过暂时还是算了,现在下载默认是20M一块,应该速度影响不会太大,稳定就好:) |
速度高到 return haha 了我会说吗!? |
最新版?贴个log看看? |
Hi, Thanks. On Fri, Aug 15, 2014 at 11:31 AM, woomg notifications@github.com wrote:
|
请问下载速度的问题找到了么?从百度云网页下载速度能到1M,bypy只能25k,而且重试很多,实在很崩溃。。。 |
@sunzhaoyang 最新版也这样?这个是挺让人崩溃的,现在还不知道整洁在哪里。。。 只是下载慢,上传速度还可以? |
现在申请不到接口了,本来想学着写一个。不知道百度的接口返回的是一个下载的url还是别的?有没有可能用aria2c 来做下载和断点续传?现在用百度网盘的chrome插件可以直接添加到aria2c rpc,下载速度很快,唯一的弊端就是链接会1小时后失效,但重新添加也可以断点续传很方便。 |
没试过上传,我这边基本就是拿来下电影 |
哦。 我用的是PCS API的接口,下载就是一个简单的HTTP GET请求(需要授权后获得的access token) 这个链接也是很好构造,你下载时加上 |
@sunzhaoyang ,你说的那个Chrome插件能给个链接吗? |
@sunzhaoyang ,感谢,我看看能挖出点东西不。 |
服务器的顺序已更换(GAE的最后一个试): |
看了一下,是用百度直接的请求方式(好像是BDUSS cookie验证的),一时半会儿没法直接用过来。。、 速度这个问题我猜应该是百度那面对PCS API做了限制吧。 |
恩,应该就是pcs接口限速了。 |
DUP: #170 我遇到类似的问题(上传太慢),应该是pcs的限制。有2个可以做的优化:
|
我是年付会员,百度云管家能“加速”到差不多跑满我这边的带宽,但是bypy还是100k不到。 |
我先把这个issue关了。 下载上传速度低暂时 |
赞一下这个工具, 很不错, 就是速度有点慢.
我这边8M网络, 浏览器直接下载百度云里的文件, 速度接近1M. 但是用这个工具syncdown的时候, 10几分钟才下同步了不到10M.
手动试了下, 在__downtrunks函数里, 如果不加上Range参数, 直接header = '' ,可以观察到网卡上流量近乎1M, 但后面大小验证没通过, 文件也没能写到磁盘上.
是不是可以在这里做下优化, 分情况, 并不一定总要带上range参数?
The text was updated successfully, but these errors were encountered: