python请求钩子类似于pycurl.WRITEFUNCTION?

python请求钩子类似于pycurl.WRITEFUNCTION?,python,python-requests,pycurl,Python,Python Requests,Pycurl,我一直在为我的项目使用PycURL,它利用PycURL.WRITEFUNCTIONhook以可控的方式使用传入的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

我一直在为我的项目使用PycURL,它利用
PycURL.WRITEFUNCTION
hook以可控的方式使用传入的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,因为我用来终止按需流的解决方案相当粗糙(也很高兴用PycURL为该用例获得更好的解决方案)。另外,
请求
是一个更容易使用的库

那么,
请求
中是否有我可以利用的东西来达到同样的目的?或者它也可能是我需要探索的类似于传入流处理程序的东西


提前感谢。

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

当前答案 下面的代码片段是我应用于使用
python请求
完全替换
pycurl
的代码片段。简而言之,只需提供
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
的当前版本确实使我的请求易于实现。非常感谢
请求背后的团队

从1.0版开始,我就将
PycURL
完全替换为
requests
,效果非常好


再次感谢上面的所有评论:)

看起来很相关(特别是
iter\u内容
iter\u线
方法):谢谢@IsmailBadawi。我以前探索过,这就是我使用的解决方案。决定改用
pycurl
是因为write函数钩子能够
返回-1
,以便根据自定义条件终止流。也许吧?@woozyking:你可以使用
stream=True
,然后从
响应中读取。原始的
,完成后关闭。谢谢@MartijnPieters,我很快会尝试一下。请在回答中写下你是如何解决的,这样其他人也可以受益。这实际上并不是对你问题的回答。@Hjulle谢谢你的建议。我最终用一个更像答案的答案来编辑这篇文章。希望这比我以前自私的评论能帮助更多的人。