【问题标题】:pycurl request exist in header function?标头函数中存在pycurl请求吗?
【发布时间】:2009-02-08 08:32:58
【问题描述】:

当我想在标题或写入函数中取消下载时,在 C 中确实返回 -1。在 pycurl 我得到这个错误

pycurl.error: invalid return value for write callback -1 17

我不知道 17 是什么意思,但我做错了什么?

【问题讨论】:

    标签: python libcurl pycurl


    【解决方案1】:

    来自 pycurl.c:

    else if (PyInt_Check(result)) {
        long obj_size = PyInt_AsLong(result);
        if (obj_size < 0 || obj_size > total_size) {
            PyErr_Format(ErrorObject, "invalid return value for write callback %ld %ld", (long)obj_size, (long)total_size);
            goto verbose_error;
        }
    

    这意味着 17 是 total_size - 这可能吗? -1(结果)是您的回调返回的内容。

    【讨论】:

    • 这是否意味着我不能在没有打印到控制台的 pycurl 错误的情况下取消标头中的传输?
    • 看起来不可能。标记为已接受(顺便说一句,我不再需要这个)
    【解决方案2】:
    import pycurl
    import StringIO
    
    c = pycurl.Curl()
    s = StringIO.StringIO()
    c.setopt(pycurl.URL, url)
    c.setopt(pycurl.HEADER, True)
    c.setopt(pycurl.NOBODY, True)
    c.setopt(pycurl.WRITEFUNCTION, s.write)
    c.perform()
    
    print(s.getvalue())
    

    【讨论】:

    • 下载完成后我看不到取消下载的方法,但我不再需要它了。
    • @Nekmo,猜你应该在 pycurl.NOBODY 选项下划线。我有同样的问题,看了好几遍你的答案,但没有注意到)
    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 2021-02-21
    • 1970-01-01
    • 2016-06-29
    • 2023-03-17
    • 2019-03-08
    • 2013-06-09
    相关资源
    最近更新 更多