【问题标题】:How can I use the CURLOPT_MAX_RECV_SPEED_LARGE option with pycurl and Python?如何在 pycurl 和 Python 中使用 CURLOPT_MAX_RECV_SPEED_LARGE 选项?
【发布时间】:2013-07-11 15:27:51
【问题描述】:

我正在尝试将CURL's CURLOPT_MAX_RECV_SPEED_LARGE option 与 pycurl 库一起使用。这是我的测试代码:

import sys
import pycurl


class Test:
    def __init__(self):
        self.contents = ''

    def body_callback(self, buf):
        self.contents = self.contents + buf

print >>sys.stderr, 'Testing', pycurl.version

t = Test()
c = pycurl.Curl()
c.setopt(c.URL, 'http://curl.haxx.se/dev/')
c.setopt(c.WRITEFUNCTION, t.body_callback)
c.setopt(c.CURLOPT_MAX_RECV_SPEED_LARGE, 1024)
c.perform()
c.close()

print t.contents

它会产生错误;似乎没有为此选项定义库常量。

Traceback (most recent call last):
  File "/Users/nilayanand/Documents/workspace/photofeed/photofeed-desktop/test/curl.py", line 18, in <module>
    c.setopt(c.CURLOPT_MAX_RECV_SPEED_LARGE, 1024)
AttributeError: CURLOPT_MAX_RECV_SPEED_LARGE

如何在 pycurl 中使用 CURLOPT_MAX_RECV_SPEED_LARGE 选项?

【问题讨论】:

    标签: python curl pycurl


    【解决方案1】:

    CURLOPT_MAX_RECV_SPEED_LARGE 选项的属性不包括CURLOPT_ 前缀,它只是命名为MAX_RECV_SPEED_LARGE。如果您将使用它的行更正为:

    c.setopt(c.MAX_RECV_SPEED_LARGE, 1024)
    

    【讨论】:

    • 解决了这个问题。谢谢杰里米。
    • 太棒了!我希望您可以通过按左侧的绿色复选标记将此标记为未来观众的解决方案。
    【解决方案2】:

    我不确定这是否可行,但您可以尝试更改此行

    c.setopt(c.CURLOPT_MAX_RECV_SPEED_LARGE, 1024)
    

    这一行

    c.setopt(CURLOPT_MAX_RECV_SPEED_LARGE, 1024)
    

    【讨论】:

    • 他没有import * from pycurl 或任何东西,因此无法定义CURLOPT_MAX_RECV_SPEED_LARGE。这一定会导致错误。
    • 导入 * 或直接使用 CURLOPT_MAX_RECV_SPEED_LARGE 都不行。
    • 这是他们的手册所说的:传递 curl_off_t 作为参数。如果在传输期间的累积平均下载速度超过此速度(以每秒字节数计算),则传输将暂停以保持平均速率小于或等于参数值。默认为无限速度。 (在 7.15.5 中添加)curl.haxx.se/libcurl/c/…
    猜你喜欢
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 2021-05-07
    相关资源
    最近更新 更多