PyCurl超时与工作网络连接在Windows10



当使用GrabLib时,它使用PyCurl/LibCurl进行请求,我在发送请求时不断收到超时错误。然而,当使用requests模块时,requests.get方法可以毫无问题地连接到第三方网站。

以下是我使用请求和pycurl:的示例代码

import pycurl
import requests
r = requests.get('http://www.google.com')
print r
c = pycurl.Curl()
c.setopt(pycurl.TIMEOUT_MS, 3000)
c.setopt(pycurl.URL, 'http://www.google.com/')
c.perform()

这是代码的输出:

<Response [200]>
Traceback (most recent call last):
    File "C:/Users/redacted/test2.py", line 10, in <module>
        print c.perform()
pycurl.error: (28, 'Resolving timed out after 3000 milliseconds')

有人能告诉我为什么会发生这种事吗?我在这里已经穷途末路了。

在翻译了一些俄罗斯谷歌集团的评论后,我确定从"PycURL/7.43"降级。0 libcurl/7.47。0 OpenSSL/1.0 2e zlib/1.2 8 c。。Ares/1.10 0 libssh2/1.6 0"到"PycURL/7.19.5.3 libcurl/7.45.0 WinSSL zlib/1.2.8"(打印(PycURL.version)")修复了我遇到的任何问题。我不确定PycURL的复杂性,以及这些版本之间发生了什么变化,所以我无法告诉你为什么会发生这种情况。我只知道这暂时解决了问题。

如果这有帮助的话,当我从工作网络切换到家庭网络时,这种情况就开始发生了;但我也有一个在启动时运行的VPN(P.I.a.)。这让我相信某种Windows 10网络设置是造成这个问题的原因。起初,当问题发生时,我可以重置我的机器,它会解决问题,但会在稍后发生(我想是当我的VPN连接时?)。在我从家庭网络回到工作网络后,出于无关的原因,我卸载了P.I.A.,PyCurl完全停止了工作。不管出于什么原因,降级还是暂时解决了这个问题。

如果有人能提供更多关于为什么只有PyCurl才会发生这种情况的见解,那么我们将不胜感激。

参考链接:

https://groups.google.com/forum/#!主题/python抓取/PwoplNwa1TI

https://bintray.com/pycurl/pycurl/pycurl/view#files(pycurl-7.19.5.1.win32-py2.7.msi)(我卸载了pycurl并在Windows 10 x64上安装了此版本)

最新更新