PyCurl通过Windows 10上的工作网络连接进行定时

时间:2016-07-28 19:09:12

标签: python networking windows-10 libcurl pycurl

当使用GrabLib,它使用PyCurl / LibCurl发出请求时,我在发送请求时不断收到超时错误。但是,在使用请求模块时,requests.get方法连接到第三方网站时没有任何问题。

以下是我使用requests和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')

有人可以告诉我为什么会这样吗?我在这里死路一条。

1 个答案:

答案 0 :(得分:1)

在翻译了一些俄罗斯谷歌集团的评论之后,我已经确定从“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上安装了此版本)