我正在编写一个通过 cURL 查询社交媒体 API 的 Python 应用程序。我查询的大多数不同服务器(Google+、Reddit、Twitter、Facebook 等)都有 cURL 抱怨:
附加的东西不好 transfer.c:1037: 0 0
不寻常的是,当应用程序第一次启动时,每个服务的响应都会抛出一次或两次这一行。几分钟后,这条线会出现几次。显然 cURL 正在识别它不喜欢的东西。大约半小时后,服务器开始超时,这条线重复了几十次,所以它显示出一个真正的问题。
我该如何诊断?我尝试使用 Wireshark 捕获请求和响应标头以搜索可能导致 cURL 抱怨的异常,但是对于所有 Wireshark 的复杂性,似乎没有一种方法可以仅隔离和显示标头。
这是代码的相关部分:
output = cStringIO.StringIO()
c = pycurl.Curl()
c.setopt(c.URL, url)
c.setopt(c.USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0')
c.setopt(c.WRITEFUNCTION, output.write)
c.setopt(c.CONNECTTIMEOUT, 10)
c.setopt(c.TIMEOUT, 15)
c.setopt(c.FAILONERROR, True)
c.setopt(c.NOSIGNAL, 1)
try:
c.perform()
toReturn = output.getvalue()
output.close()
return toReturn
except pycurl.error, error:
errno, errstr = error
print 'The following cURL error occurred: ', errstr