Python 使用请求将放入etcd会导致空值

Python 使用请求将放入etcd会导致空值,python,python-requests,etcd,Python,Python Requests,Etcd,我试图使用请求来运行一个简单的PUT,并向本地运行的etcd添加一对新的PUT。我可以直接打电话给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=\"Te

我试图使用请求来运行一个简单的PUT,并向本地运行的etcd添加一对新的PUT。我可以直接打电话给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)
上面的print语句向我展示了以下内容:

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

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

首先,您可以通过r.request从r获取发送的请求。然后你可以看到它有什么问题:

>>> 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,数据={value:Test Message}