python-requests钩子类似于pycurl.WRITEFUNCTION?

时间:2013-11-07 20:00:31

标签: python python-requests pycurl

我一直在为我的项目https://pypi.python.org/pypi/tidehunter使用PycURL,它利用pycurl.WRITEFUNCTION挂钩以可控的方式使用传入的HTTP流。用例可以在项目页面上找到,或者像这样的技术:

def _on_data_receive(self, data):
    self.buffer += data

    if data.endswith('\r\n'):  # or any valid chunk delimiter
        # Do something about self.buffer
        print self.buffer

    if True:  # some valid condition to disconnect
        return -1  # the way to stop the stream, would raise pycurl.error

我正在考虑改用PycURL,因为我用来按需终止流的解决方案相当hacky(也很乐意为PycURL的用例获得更好的解决方案)。另外requests是一个更舒适的库。

我可以利用requests中的任何内容来达到同样的目的吗?或者它也可能是我需要探索的传入流处理程序。

提前致谢。

1 个答案:

答案 0 :(得分:1)

编辑 2016-03-22:为自私道歉。

当前答案

以下代码段是我应用于使用pycurl完全替换python-requests的内容。简而言之,只需提供stream=True参数。

import requests

def tide_on(url):
    r = requests.get(url, stream=True, **kwargs)

    for line in r.iter_lines():
        # wish to stop after consuming just one line
        print(line)
        break

    r.close()

上一页“答案”

发言时requests的当前版本确实让我很容易实现我的要求。非常感谢requests背后的团队!

自1.0版以来,我在tidehunter中完全将PycURL替换为requests,而且效果很好!

再次感谢上述所有评论:)

相关问题