使用请求将<key,value>放入etcd中的结果为空值

时间:2018-07-11 23:52:38

标签: python python-requests etcd

我正在尝试使用请求来运行一个简单的PUT并将新的对添加到etcd(我已经在本地运行)。我可以这样直接调用etcd来做到这一点:

curl -X PUT http://127.0.0.1:2379/v2/keys/message -d value="Test Message"

但是,我认为与之等效的以下代码似乎不起作用:

import requests
r = requests.put('http://127.0.0.1:2379/v2/keys/message', data = 'value=\"Test Message\"')
print(r.content)

上面的打印语句向我展示了这一点:

b'{"action":"create","node":{"key":"/message/35","value":"","modifiedIndex":35,"createdIndex":35}}\n'

因此出于某种原因, value 的值似乎为空。我为 data 参数尝试了多种格式,但没有任何运气。

1 个答案:

答案 0 :(得分:1)

首先,您可以通过rr.request获取发送的请求。然后您可以看到问题所在:

>>> r = requests.put("http://www.example.com", data="value=\"Test Message\"")
>>> r.request
<PreparedRequest [PUT]>
>>> r.request.url
'http://www.example.com/'
>>> r.request.body
'value="Test Message"'
>>> r.request.headers
{'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '20'}

第二,我认为您应该使用r = requests.put('http://127.0.0.1:2379/v2/keys/message', data={"value": "Test Message"})