Python PUT请求带有困难的JSON

2024-05-20 15:01:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用Python请求发出PUT请求。我看过其他一些帖子,据我所知,我做得很对。然而,服务器上的JSON没有更新(尽管得到了200ok的响应)。你知道吗

我肯定的网址是正确的,并接受一个获取或放置(没有职位)。我能够成功地从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}'}

我使用的是Python2请求模块(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。非常感谢。你知道吗


Tags: name服务器jsontruevaluecontainerserviceusage