【发布时间】:2015-03-24 04:56:01
【问题描述】:
我正在尝试使用Kubernetes 提供的事件流
使用requests 模块的api。我遇到了看起来像
缓冲问题:requests 模块似乎滞后了一个事件。
我的代码看起来像这样:
r = requests.get('http://localhost:8080/api/v1beta1/watch/services',
stream=True)
for line in r.iter_lines():
print 'LINE:', line
由于 Kubernetes 发出事件通知,此代码将仅显示 新事件进入时发出的最后一个事件,这使得它 对于需要响应服务的代码几乎完全没用 添加/删除事件。
我已经通过在子进程中生成 curl 而不是使用
requests 库:
p = subprocess.Popen(['curl', '-sfN',
'http://localhost:8080/api/watch/services'],
stdout=subprocess.PIPE,
bufsize=1)
for line in iter(p.stdout.readline, b''):
print 'LINE:', line
这可行,但会牺牲一些灵活性。有没有办法
避免requests 库的这种缓冲问题?
【问题讨论】:
标签: python stream python-requests kubernetes