带有困难JSON的Python PUT请求

时间:2019-02-06 15:18:09

标签: python rest python-requests cloudera put

我正在尝试使用Python请求发出PUT请求。我看过其他几篇文章,据我所知,我做得对。但是我在服务器上的JSON没有更新(尽管响应可以得到200 ok)。

我很肯定URL是正确的,并且接受GET或PUT(无POST)。我能够从URL成功获取。

这是r.json()返回的JSON(发出GET请求后):

{u'items': [{u'name': u'cm_yarn_container_usage_job_pool', u'value': u'yarn'},
            {u'name': u'cm_yarn_container_usage_job_user', u'value': u'yarn'},
            {u'name': u'cm_yarn_enable_container_usage_aggregation',
             u'value': u'true'},
            {u'name': u'hadoop_secure_web_ui', u'value': u'true'},
            {u'name': u'hdfs_service', u'value': u'hdfs'},
            {u'name': u'yarn_core_site_safety_valve',
             u'value': u'long string here'},
            {u'name': u'yarn_fs_scheduled_allocations',
             u'value': u'{"long": "unicode string here"}'},
            {u'name': u'yarn_nodemanagers_healthy_thresholds',
             u'value': u'{"warning":80,"critical":75}'},
            {u'name': u'yarn_service_cgroups', u'value': u'true'},
            {u'name': u'yarn_service_lce_always', u'value': u'true'},
            {u'name': u'zookeeper_service', u'value': u'zookeeper'}]}

我可以这样提取我想要的字段:

>>> x['items'][7]['value']
u'{"warning":80,"critical":75}'

现在,我正在尝试将此unicode词典更新为:u'{"warning":79,"critical":75}'}

我正在使用Python 2请求模块(服务器上允许使用Python2)。这是我尝试在服务器上更新JSON的方法:

url = "http://nodename:7180/api/v6/clusters/<cluster-name>/services/yarn/config"
id , password = '', ''
payload = {u'items': [{u'name': u'yarn_nodemanagers_healthy_thresholds', u'value': u'{"warning":79,"critical":75}'}]}
r = requests.put(url, json=payload, auth=(id, password))

此请求看起来正确吗?我尝试了许多变体,但仍然没有更新服务器上的JSON。谢谢。

0 个答案:

没有答案