我正在编写一个Python应用程序,每个服务器每分钟查询几个Web服务器。应用程序运行正常几分钟,然后所有服务器开始响应以下错误:
发生以下cURL错误:请求的网址返回错误:400错误请求
当发生这种情况时,我看到我的输出带宽挂钩和两个CPU核心都在80%以上工作(在这台机器上名义上非常轻载)。但是,内存使用率并未受到显着影响。
有没有办法捕获从特定应用程序发送的所有请求的整个请求?或者,在Python中我可以捕获完整的请求,然后将其输出以进行调试吗?以下是查询服务器的代码部分:
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
该机器是双核2.0 GHz英特尔机箱,带有6 GiB RAM,运行Kubuntu 12.10和Python 2.7。所有内容都在VIM中编码,因此没有虚假的IDE代码在运行。
答案 0 :(得分:1)
有没有办法捕获从特定应用程序发送的所有请求的整个请求?
捕获和监控所有传入/传出流量的最简单方法是使用wireshark
或者,在Python中我可以捕获完整的请求然后将其输出以进行调试吗?
您可以添加以下调试选项,以便curl打印有关请求的一些有用信息:
c.setopt(pycurl.VERBOSE,1)