TypeError: request() got an unexpected keyword argument 'json' - PYTHON,AWS
TypeError: request() got an unexpected keyword argument 'json' - PYTHON,AWS
这里有没有人可以帮助我完成这个 python 脚本。
当我执行此脚本时出现此错误:
TypeError: request() 得到了一个意外的关键字参数 'json'
import boto3
import requests
from requests_aws4auth import AWS4Auth
host = 'XXXXX' # include https:// and trailing /
region = 'ap-northeast-1'
service = 'es'
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)
# Register repository
headers = {"Content-Type": "application/json"}
path = '_snapshot/XXXXX' # the Elasticsearch API endpoint
url = host + path
payload = {
"type": "s3",
"settings": {
"bucket": "XXXXX",
"region": "ap-northeast-1",
"role_arn": "XXXXX"
}
}
r = requests.put(url, auth=awsauth, json=payload, headers=headers)
print(r.status_code)
print(r.text)
只尝试 r = requests.put(url, auth=awsauth, headers=headers)
。看起来不需要参数 json=payload 因为 headers 包含 json 格式。此处的更多信息 (https://github.com/requests/requests/issues/2664) 可能也会有所帮助。
问题是 Amazon Linux/2.8.1(可能还有其他版本)默认安装了 requests==1.2.3。根据请求模块的release notes,'json'参数仅在2.4.2(2014-10-05)
中添加
您可以像这样检查您安装的版本并升级到最新版本:
$ pip show requests | grep Version
Version: 1.2.3
$ sudo /usr/local/bin/pip install --upgrade requests
$ pip show requests | grep Version
Version: 2.8.1
我试图做与这里的问题完全相同的事情,并且有相同的 requests=1.2.3 库版本问题。
接受的答案对我不起作用,这不足为奇,因为它根本不发送任何负载。
起作用的是使用 1.2.3“数据”参数并将 json 有效负载对象作为字符串提供给它:
...
import json
...
r = requests.put(url, auth=awsauth, data=json.dumps(payload), headers=headers)
这里有没有人可以帮助我完成这个 python 脚本。
当我执行此脚本时出现此错误:
TypeError: request() 得到了一个意外的关键字参数 'json'
import boto3
import requests
from requests_aws4auth import AWS4Auth
host = 'XXXXX' # include https:// and trailing /
region = 'ap-northeast-1'
service = 'es'
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)
# Register repository
headers = {"Content-Type": "application/json"}
path = '_snapshot/XXXXX' # the Elasticsearch API endpoint
url = host + path
payload = {
"type": "s3",
"settings": {
"bucket": "XXXXX",
"region": "ap-northeast-1",
"role_arn": "XXXXX"
}
}
r = requests.put(url, auth=awsauth, json=payload, headers=headers)
print(r.status_code)
print(r.text)
只尝试 r = requests.put(url, auth=awsauth, headers=headers)
。看起来不需要参数 json=payload 因为 headers 包含 json 格式。此处的更多信息 (https://github.com/requests/requests/issues/2664) 可能也会有所帮助。
问题是 Amazon Linux/2.8.1(可能还有其他版本)默认安装了 requests==1.2.3。根据请求模块的release notes,'json'参数仅在2.4.2(2014-10-05)
中添加您可以像这样检查您安装的版本并升级到最新版本:
$ pip show requests | grep Version
Version: 1.2.3
$ sudo /usr/local/bin/pip install --upgrade requests
$ pip show requests | grep Version
Version: 2.8.1
我试图做与这里的问题完全相同的事情,并且有相同的 requests=1.2.3 库版本问题。
接受的答案对我不起作用,这不足为奇,因为它根本不发送任何负载。
起作用的是使用 1.2.3“数据”参数并将 json 有效负载对象作为字符串提供给它:
...
import json
...
r = requests.put(url, auth=awsauth, data=json.dumps(payload), headers=headers)