【发布时间】:2013-11-07 20:00:30
【问题描述】:
我一直在为我的项目 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,因为我用来终止按需流的解决方案相当老套(也很高兴使用 PycURL 为该用例获得更好的解决方案)。 requests 也是一个使用起来更愉快的库。
那么requests 中有什么我可以用来实现相同目的的东西吗?或者也许它也是我需要探索的传入流处理程序。
提前致谢。
【问题讨论】:
-
看起来相关(特别是
iter_content和iter_lines方法):python-requests.org/en/latest/user/advanced/… -
感谢@IsmailBadawi。我之前探索过python-requests.org/en/latest/user/advanced/#streaming-requests,这就是我使用的解决方案。改用
pycurl的决定是由于写入函数挂钩对return -1的能力,以便根据自定义条件终止流。 -
Event hooks 也许?
-
@woozyking:您可以使用
stream=True,然后从response.raw读取并在完成后关闭它,也许。 -
谢谢@MartijnPieters,我会尽快试一试。
标签: python python-requests pycurl