Как использовать etcd v3 restful api для просмотра
Я пытаюсь посмотреть ключ с помощью etcdv3 restful api, следуя https://github.com/coreos/etcd/blob/master/Documentation/dev-guide/api_grpc_gateway.md, но кажется, что он плохо работает с watch.
curl http://localhost:2379/v3beta/watch \
-X POST -d '{"create_request": {"key":"Zm9v"} }'
curl http://localhost:2379/v3beta/watch \
-X POST -d '{"create_request": {"key":"Zm9v"} }'
#{"header":{"cluster_id":"7016043442779247867","member_id":"5993310732371594633","revision":"2","raft_term":"2"}}
часы не будут иметь ответа.
это мой docker-compose.yml:
version: "3"
services:
etcd:
image: quay.io/coreos/etcd:latest
command: >
/usr/local/bin/etcd
--name node1
--initial-advertise-peer-urls http://${HOST}:2380
--listen-peer-urls http://0.0.0.0:2380
--advertise-client-urls http://${HOST}:2379
--listen-client-urls http://0.0.0.0:2379
--initial-cluster node1=http://${HOST}:2380
--debug
expose:
- 2379
- 2380
ports:
- "2379:2379"
- "3380:2380"
2 ответа
Попробуйте это вместо этого:
$ curl --no-buffer http://localhost:2379/v3beta/watch \
-X POST -d '{"create_request": {"key":"Zm9v"} }'
Также обратитесь к этой удивительной статье: HTTP Streaming (или Chunked vs Store & Forward)
Вы можете увидеть ответ, как только вы остановите etcd или у вас будет достаточно событий. Я думаю, что это связано со временем очистки буфера.