代码之家  ›  专栏  ›  技术社区  ›  Idan K

python中的带宽限制

  •  10
  • Idan K  · 技术社区  · 14 年前

    有哪些库可以让您控制网络请求(特别是HTTP)的下载速度。我看不到urllib2内置的任何东西(也看不到我打算使用的(py)qt)。

    扭曲能控制带宽吗?如果没有,我如何控制URLLIB2或Twisted的读取缓冲区大小? sleep 挂起网络操作不是一个选项。

    2 回复  |  直到 14 年前
        1
  •  8
  •   habnabit dwc    14 年前

    当然是扭曲的罐子。你想要 twisted.protocols.policies.ThrottlingFactory . 把你现有的工厂包在里面,然后把它交给任何想要的工厂。

        2
  •  8
  •   Community Michael Schmitz    7 年前

    Urllib2没有提供这样做的方法,因此您必须扩展它使用的一些类,并自己实现速率限制。你可能想看看 this question . 如果你决定写一个限制器,读一下 token bucket leaky bucket 算法。

    或者,您可以使用 pycurl 随着 CURLOPTMAXRECVSPEEDLARGE 选择权。

    编辑: urlgrabber 包似乎也支持节流,并且可能比pycurl更容易理解。

    如果您更喜欢使用事件循环模型编程,那么这里有一个扭曲的方法,在另一个答案中已经提到过。