python3请求“冻结”,但urllib.request.urlopen不?

时间:2018-02-19 20:02:47

标签: python python-requests urlopen

我遇到了一个奇怪的请求包行为...或者我相信:

(1)对于某个网站,requests.get在Windows上运行,但在Linux上冻结(如果超时设置为几秒,则会引发超时错误)

(2)urllib.request.urlopen适用于Windows和Linux

是否有人建议如何进一步调试/调查?

以下是详细信息:

在我的Windows机器上运行Inside a Jupyter Notebook:

import sys
import requests
print(sys.version)
print(requests.__version__)
  

3.6.3 | Anaconda custom(32位)| (默认,2017年10月15日,07:29:16)[MSC v.1900 32 bit(Intel)]

     

2.18.4

然后我尝试:

time1 = time.time()
response=requests.get('https://www.tagheuer.com/en/watches/tag-heuer-carrera-calibre-5-automatic-watch-39-mm-war211a-ba0782')
time2 = time.time()
print(response.status_code)
print(time2-time1)

结果:

  

200

     

0.6808576583862305

到目前为止,那么好......然后我转到Unix服务器:

import sys
import requests
print(sys.version)
print(requests.__version__)
  

3.5.2(默认,2017年11月23日,16:37:01)\ n [GCC 5.4.0 20160609]

     

2.18.4

当我发出请求声明时,

response=requests.get('https://www.tagheuer.com/en/watches/tag-heuer-carrera-calibre-5-automatic-watch-39-mm-war211a-ba0782')

回来需要很长时间。有时返回的字节看起来根本不像请求的页面。有时候我没有耐心并按下CTRL-C。

但是在同一台服务器上:

 from urllib.request import urlopen
 import time
 url='https://www.tagheuer.com/en/watches/tag-heuer-carrera-calibre-5-automatic-watch-39-mm-war211a-ba0782'
 time1 = time.time()
 f = urlopen(url)
 myfile = f.read()
 time2 = time.time()
 print(f.status)
 print(time2-time1)

结束

  

200

     

0.22718000411987305

为什么请求库让我失望了Linux机器而不是Windows机器?

为什么urllib.request.urlopen会工作,但请求会冻结?他们有什么不同的做法?

相同的代码适用于两个平台上的www.google.com。 TAG_Heuer网站的哪些(非标准?)行为会导致请求失败?

期待您的反馈和想法!

0 个答案:

没有答案