我一直在为我的项目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
中的任何内容来达到同样的目的吗?或者它也可能是我需要探索的传入流处理程序。
提前致谢。
答案 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
,而且效果很好!
再次感谢上述所有评论:)