我正在尝试发送元素列表的发布请求,并且获取的值太多,无法解包异常。
代码:
@task
def success_predict(self):
success_payload = [
{"REQUEST_ID": "123456", "ATT1": "A", "ATT2": "T2", "ATT3": "NS", "ATT4": 65,
"ATT5": 122, "ATT6": "F", "ATT6": 67}, {"REQUEST_ID": "7890", "ATT1": "A", "ATT2": "T2", "ATT3": "NS", "ATT4": 65,
"ATT5": 122, "ATT6": "F", "ATT6": 67}]
self.client.post("/predict", success_payload)
例外:
File "D:\CodeBase\blood_only_pipeline_api\load_test\locustfile.py", line 16, in success_predict
File "d:\users\user_name\.conda\envs\py36env\lib\site-packages\requests\sessions.py", line 578, in post
return self.request('POST', url, data=data, json=json, **kwargs)
File "d:\users\user_name\.conda\envs\py36env\lib\site-packages\locust\clients.py", line 114, in request
response = self._send_request_safe_mode(method, url, **kwargs)
File "d:\users\user_name\.conda\envs\py36env\lib\site-packages\locust\clients.py", line 167, in _send_request_safe_mode
return requests.Session.request(self, method, url, **kwargs)
File "d:\users\user_name\.conda\envs\py36env\lib\site-packages\requests\sessions.py", line 516, in request
prep = self.prepare_request(req)
File "d:\users\user_name\.conda\envs\py36env\lib\site-packages\requests\sessions.py", line 459, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "d:\users\user_name\.conda\envs\py36env\lib\site-packages\requests\models.py", line 317, in prepare
self.prepare_body(data, files, json)
File "d:\users\user_name\.conda\envs\py36env\lib\site-packages\requests\models.py", line 508, in prepare_body
body = self._encode_params(data)
File "d:\users\user_name\.conda\envs\py36env\lib\site-packages\requests\models.py", line 97, in _encode_params
for k, vs in to_key_val_list(data):
ValueError: too many values to unpack (expected 2)
让我知道我做错了什么。
答案 0 :(得分:2)
有效载荷应该是字典,而不是列表(也许在某些情况下也可以与列表一起使用,但我从未这样做过:)
json帖子的正确语法是:
self.client.post("/predict", json=success_payload)
或对于表单编码的帖子:
self.client.post("/predict", data=success_payload)
有关更多示例/详细信息,请参见requests
的文档:https://requests.readthedocs.io/en/master/