我正在尝试 使用该模块使用Kubernetes
api提供的事件流。requests
我遇到了一个看起来像缓冲的问题: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
库的缓冲问题?