首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用flask和pickle发送python类对象

如何使用flask和pickle发送python类对象
EN

Stack Overflow用户
提问于 2020-07-18 05:10:53
回答 1查看 1.2K关注 0票数 0

我有以下代码

client.py

代码语言:javascript
运行
复制
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) })

server.py

代码语言:javascript
运行
复制
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时,我得到以下错误:

代码语言:javascript
运行
复制
[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请求发送时被转换为字符串。如何通过请求在客户端发送数据,然后在服务器端解码?

EN

回答 1

Stack Overflow用户

发布于 2021-04-04 22:10:25

它应该是转储,而不是加载

像这样编辑

代码语言:javascript
运行
复制
data = pickle.dumps(request.form['req'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62961795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档