Pycurl WRITEDATA WRITEFUNCTION碰撞/崩溃

时间:2008-11-17 05:42:15

标签: python crash libcurl pycurl

如何关闭WRITEFUNCTION和WRITEDATA?

使用pycurl我有一个类调用curlUtil。在其中我有pageAsString(self,URL),它返回一个字符串。

为此,我设置了WRITEFUNCTION。现在在downloadFile(self,URL,fn,overwrite = 0)中我执行open和self.c.Setopt(pycurl.WRITEFUNCTION,0)会导致问题。 Int不是有效的参数。

然后我假设WRITEDATA会覆盖该值,或者会有一个NOWRITEFUNCTION表示。 NOWRITEFUNCTION不存在所以我只使用了WRITEDATA和Python崩溃。

我写了一个名为reboot()的快速函数,它关闭curl,再次打开它,并调用reset使其处于默认状态。我在pageAsString和downloadFile中调用它,并且完全没有问题。但是,我不想重新初始化卷曲。我可能会设置一些特殊选项。

如何关闭WRITEFUNCTION和WRITEDATA?

1 个答案:

答案 0 :(得分:1)

使用写入功能,而不是将其关闭可以为您节省很多麻烦。你可能想用WRITEFUNCTION重写你的pageAsString ..

作为一个例子:

from cStringIO import StringIO
c = pycurl.Curl()
buffer = StringIO()
c.setopt(pycurl.WRITEFUNCTION, buffer.write)
c.setopt(pycurl.URL, "http://example.com")
c.perform()
...
buffer.getvalue() # will return the data fetched.