python - 如何使用烧瓶和泡菜发送python类对象
问题描述
我有以下代码
客户端.py
import requests
import pickle
class Test():
def __init__(self, val):
self.val = val
testList = []
for i in range(0,10):
testList.append(Test(i))
data = {"foo": 1000, "bar": "value", "list": testList}
endpoint = "%s/%s" % (address, "testendpoint")
r = requests.post(endpoint, data={"req": pickle.dumps(data) })
服务器.py
import flask
import pickle
from flask import request
app = flask.Flask(__name__)
app.config["DEBUG"] = False
class Test():
def __init__(self, val):
self.val = val
@app.route('/testendpoint', methods=['POST'])
def testendpoint():
data = pickle.loads(request.form['req'])
print(data)
response = {
"response": "Success"
}
return json.dumps(response)
app.run(host="0.0.0.0", port=24979)
当我在运行 server.py 的情况下运行 client.py 时,出现以下错误:
[2020-07-17 14:06:05,054] ERROR in app: Exception on /testendpoint [POST]
Traceback (most recent call last):
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib64/python3.6/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib64/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "server.py", line 11, in testendpoint
data = pickle.loads(request.form['req'])
TypeError: a bytes-like object is required, not 'str'
我假设我的 bytes 对象在通过 http 请求发送时被转换为字符串。如何通过请求在客户端发送我的数据,然后在服务器端对其进行解码?
解决方案
它应该是转储,但不是加载
像这样编辑
data = pickle.dumps(request.form['req'])
推荐阅读
- javascript - 如何使用 vue.js 处理动态表单
- postgresql - postgres=# du 并显示所有文件
- javascript - 将值分配给二维数组 javascript (node.js) 的问题
- regex - 将 XPath 与 CSS 选择器区分开来(正则表达式?)
- javascript - 不允许页面太大或太小的分页算法
- javascript - 来自 withTransaction 回调的 Mongoose 返回值
- angular - 向 FCM 发送 POST 请求不接受 Angular 中的授权标头
- c# - 使用数组和 For 循环的斐波那契数列
- ios - 使用调度等待数据附加到数组?
- reactjs - 在 URL 重定向时,React 组件总是回到初始状态