Pycurl在终端中保持打印

时间:2011-10-05 21:45:59

标签: python pycurl

我是一名初学者,使用Python和Pycurl进行网页强调测试。然而,pycurl在终端中不断打印出返回的html,这使得压力测试花费的时间比它应该的更多。我正在使用的一个这样的pycurl代码发布在下面。有没有办法只需运行pycurl而无需在任何地方打印或写入结果?任何协助都会受到谴责。

p = pycurl.Curl()
p.setopt(pycurl.POST, 0)
p.setopt(pycurl.COOKIE, sessioncookie)
p.setopt(pycurl.URL, 'http://example.com/logoff.php')
p.perform()
p.close()

4 个答案:

答案 0 :(得分:21)

Pycurl文档非常糟糕,但我认为你想把WRITEFUNCTION设置为一个什么都不做的函数,例如。

p.setopt(pycurl.WRITEFUNCTION, lambda x: None)

另外,我想说明我认为“SET做的一切”API与VMS一起发布。 Gaaah。

答案 1 :(得分:3)

可以尝试一下吗?

devnull = open('/dev/null', 'w')
p.setopt(pycurl.WRITEFUNCTION, devnull.write)

或只是一个什么都不做的功能。

答案 2 :(得分:1)

我对这里列出的两种方法都没有任何好运。两者都会导致以下错误:

pycurl.error: (23, 'Failed writing body (0 != 108)')

根据文档,lambda x: Nonedevnull.write都应该是不错的选择:

  

WRITEFUNCTION回调可能会返回写入的字节数。如果此数字不等于字节字符串的大小,则表示错误,libcurl将中止请求。 返回None是另一种方式,表示回调已经消耗了传递给它的所有字符串,因此成功了。

http://pycurl.sourceforge.net/doc/callbacks.html#WRITEFUNCTION

但是在我的项目中,我必须执行以下操作来解决此问题:

c.setopt(pycurl.WRITEFUNCTION, lambda bytes: len(bytes))

换句话说,当我查看时,返回写入的字节数是不可选的。 devnull.write实际上确实返回了写入的字节数,但我没有考虑过。可能存在字节与字符串的问题。

请注意,我正在使用Python 3.我猜这不适用于Python 2.

答案 3 :(得分:0)

要隐藏输出,请将VERBOSE更改为0:

p.setopt(pycurl.VERBOSE, 0)