python请求网站流时不合适的超时



以下网站的99.999%工作,但随机找到了它没有:

import requests
requests.get('http://arboleascity.com',timeout=(5,5),verify=False)

我已经在项目上提出了问题。

https://github.com/requests/requests/issues/4276

有什么建议或想法?

我在concurrent.futures.ThreadPoolExecutor中运行此操作,因此我真的不想添加诸如Eventlets或信号之类的外部内容。但是,对任何效果很好的东西都开放。

它流媒体流(Content-type:audio/aacp),因此没有超时,它永远不会停止流式传输。

如果您想要主页,而不是流,请将用户代理标头设置为类似浏览器的东西。如果您想要audiostream,请使用stream=True并迭代内容 - 如果需要,您也可以在这里纾困。

如果您正在编写刮板,则可能需要在试图获取分块的响应之前检查Head请求中的内容类型。

它们都完全按照记录。

连接超时是秒请求的数量将等待您的客户端在套件上建立连接对远程计算机(对应于Connect())。这是一个很好的做法,将连接超时设置为略大于3的倍数,这是默认的TCP数据包重新启动窗口。

您的客户端已连接到服务器并发送了HTTP请求,读取超时是客户端将等待服务器发送响应的秒数。(具体来说,这是客户端将在服务器发送的字节之间等待的秒数。在99.9%的情况下,这是服务器发送第一个字节的时间)。

问题不在requests,而是您访问该特定网站的方式。

即,似乎http://arboleascity.com使用User-Agent标头字段将浏览器与音乐播放器区分开。

如果您使用有效的浏览器签名,则只需返回页面HTML(text/html)并关闭连接:

$ curl -vvv -A 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0' http://arboleascity.com >/dev/null
...
< Content-Type: text/html;charset=utf-8
...
100   118    0   118    0     0    297      0 --:--:-- --:--:-- --:--:--   297
* Connection #0 to host arboleascity.com left intact

但是,如果您离开 User-Agent undefined(默认),则该站点在〜8kbps中流二进制内容(audio/aacp):

$ curl -vvv http://arboleascity.com >/dev/null
...
< Content-Type: audio/aacp
...
< icy-notice1: <BR>This stream requires <a href="http://www.winamp.com">Winamp</a><BR>
< icy-notice2: SHOUTcast DNAS/posix(linux x64) v2.5.1.724<BR>
...
100  345k    0  345k    0     0  26975      0 --:--:--  0:00:13 --:--:--  7118^C

或使用requests

>>> headers = {'user-agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0'}
>>> r = requests.get('http://arboleascity.com', headers=headers)

相关内容

  • 没有找到相关文章

最新更新