1

我正在使用 github.com/coreos/etcd/client 与 etcd 云进行通信,有时我收到 401 错误“请求索引中的事件已过时并已清除”,在服务器页面上有解释为什么会发生以及它是如何发生的得到解决。其实我想实现以下场景。

  1. 获取“key”及其修改后的索引
  2. 做一些工作
  3. 从修改后的索引开始观看“key”

这样我就可以确保在第 2 步中的所有更改也会收到。但是 Etcd 只保存前 N 个更改,有时我收到 401 错误。根据文档,我可以使用 Get key request 中的“X-Etcd-Index”+ 1 标头作为修改后的索引来观看。

curl 'http://127.0.0.1:2379/v2/keys/foo' -vv
< HTTP/1.1 200 OK
< Content-Type: application/json
< X-Etcd-Cluster-Id: f63cd37d2ff4f650
< X-Etcd-Index: 17245
< X-Raft-Index: 2107637
< X-Raft-Term: 360
< Date: Tue, 15 Dec 2015 09:02:20 GMT
< Content-Length: 791
< ...

但我不使用直接 http 调用,只使用 github.com/coreos/etcd/client。如何从获取密钥请求中获取(实际上是否可以使用 api)http 标头信息?

4

2 回答 2

1

标题X-Etcd-Index对应于Response.Index字段。

于 2015-12-15T15:23:04.250 回答
1

该索引在响应字段中作为“索引”对象可用。请参阅此处的文档:https ://godoc.org/github.com/coreos/etcd/client#Response

于 2015-12-16T02:14:55.663 回答