2016-07-28 34 views
0

使用GrabLib(使用PyCurl/LibCurl发出请求)发送请求时,我一直收到超时错误。但是,在使用请求模块时,requests.get方法连接到第三方网站时没有问题。在Windows 10上使用工作网络连接进行PyCurl定时

这里是使用请求和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') 

有人可以让我知道为什么这可能是这样吗?我在这里陷入死胡同。

+0

它为我工作。也许你的Curl安装有什么问题? – Feneric

回答

1

在翻译了一些俄罗斯的Google Group评论之后,我确定从“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”(印有“print(pycurl.version)”)修复了我遇到的任何问题。我不确定PyCurl的复杂性,以及这些版本之间的变化,所以我不能告诉你为什么会发生这种情况。我只知道现在解决了这个问题。

如果它有帮助,当我从我的工作网络切换到家庭网络时,就会发生这种情况;但我也有一个启动时运行的VPN(P.I.A.)。这使我相信某种Windows 10网络设置是导致此问题的原因。起初,当问题发生时,我可以重置我的机器,它会解决这个问题,只是为了稍后发生(我假设当我的VPN连接?)。在我从家庭网络回到我的工作网络后,出于无关原因,我卸载了P.I.A.,PyCurl完全停止工作。再次,降级现在已经解决了这个问题,无论出于何种原因。

如果任何人都可以更深入地了解为什么这可能只发生在PyCurl上,那么它将非常有用。

链接以供参考:

https://groups.google.com/forum/#!topic/python-grab/PwoplNwa1TI

https://bintray.com/pycurl/pycurl/pycurl/view#files(pycurl-7.19.5.1.win32-py2.7.msi)(我卸载pycurl和Windows 10安装的x64这个版本)

相关问题