10

私は、テストの目的でWebページにPythonとPycurlを使用する初心者です。ただし、pycurlは端末に返されたhtmlを出力し続けるため、ストレステストに必要以上の時間がかかります。私が使用しているそのようなpycurlコードの1つを以下に示します。結果をどこにも印刷または書き込むことなく、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

4 に答える 4

27

Pycurlのドキュメントはひどいですが、WRITEFUNCTIONを何もしない関数に設定したいと思います。

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

また、「SETがすべてを行う」APIがVMSで出たと思ったことを記録に残したいと思います。ガァー。

于 2011-10-05T21:52:23.993 に答える
3

これを試すことができますか?

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

または単に何もしない関数。

于 2011-10-05T21:53:55.980 に答える
1

ここにリストされている両方のアプローチで私は運がありませんでした。どちらも次のエラーにつながります。

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

ドキュメントによると、両方ともlambda x: None良いdevnull.writeオプションであるはずです:

WRITEFUNCTIONコールバックは、書き込まれたバイト数を返す場合があります。この数がバイト文字列のサイズと等しくない場合、これはエラーを意味し、libcurlは要求を中止します。Noneを返すことは、コールバックが渡されたすべての文字列を消費し、したがって成功したことを示す別の方法です。

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

ただし、私のプロジェクトでは、この問題を修正するために次のことを行う必要がありました。

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

言い換えれば、私が見たときに書き込まれたバイト数を返すことはオプションではありませんでした。devnull.write実際には書き込まれたバイト数を返しますが、私はそれを調べませんでした。おそらく、バイトと文字列に問題があります。

私はPython3を使用していることに注意してください。これはPython2には当てはまらないと思います。

于 2015-12-29T15:40:28.147 に答える
0

出力を非表示にするには、VERBOSEを0に変更します。

p.setopt(pycurl.VERBOSE, 0)
于 2016-10-23T06:41:59.843 に答える