你如何序列化一个python烧瓶变量?

Posted

技术标签:

【中文标题】你如何序列化一个python烧瓶变量?【英文标题】:how do you serialize a python flask variable? 【发布时间】:2020-11-06 20:13:54 【问题描述】:

从烧瓶进口烧瓶 从烧瓶导入渲染模板,重定向,请求 从 flask_restful 导入资源,API 导入请求 进口泡菜

app = Flask(名称) api = Api(应用程序)

类 HelloWorld(资源): def post(自我): r = requests.get('https://samples.openweathermap.org/data/2.5/weather?zip=16802,us&appid=157d320b7d029e653c67902f982784ff')

    json_object_r = r.json()
    temp_k = float(json_object_r['main']['temp'])
    temp_c = temp_k - 273.15
    tempp_c = int(temp_c)

    pickle_in = open("var.pickle", "wb")
    tempp_c = pickle.load(pickle_in)



    # pressure

    p = requests.get('https://samples.openweathermap.org/data/2.5/weather?zip=16802,us&appid=157d320b7d029e653c67902f982784ff')

    json_object_p = p.json()
    press_k = float(json_object_p['main']['pressure'])

    # wind
    # speed
    w = requests.get('https://samples.openweathermap.org/data/2.5/weather?zip=16802,us&appid=157d320b7d029e653c67902f982784ff')

    json_object_w = w.json()
    wind_k = float(json_object_w['wind']['speed'])

    # gust
    g = requests.get('https://samples.openweathermap.org/data/2.5/weather?zip=16802,us&appid=157d320b7d029e653c67902f982784ff')

    json_object_g = g.json()
    gust_g = float(json_object_g['wind']['gust'])


    return tempp_c

api.add_resource(HelloWorld, '/')

如果 name == 'ma​​in': app.run(debug=True)

【问题讨论】:

试试return json.dumps(tempp_c)。如果它不是 json 可序列化的 - 考虑一些二进制格式 - 你甚至可以发回一个腌制对象 - 如果端点是用于应用程序的。 如何将腌制的物品送回? 【参考方案1】:

创建一个先发送序列化对象的程序:

import flask
import pickle
object_to_send = 1:2

@app.route('/endpoint')
def endpoint():
    return pickle.dumps(object_to_send).hex()

app.run(port=8080)

然后你可以从另一个 python 程序中调用它并读取那个对象:

import pickle
import requests

object_hex = requests.get('http://127.0.0.1:8080/endpoint').text
object_received = pickle.loads(bytearray.fromhex(object_hex))

print(object_received)

这绝对不是一个最佳实践——如果可能的话,也许您应该将其序列化为 json,或者使用一些框架进行消息传递,该框架应该支持不同的序列化方法或消息总线,例如 Kafka。

【讨论】:

以上是关于你如何序列化一个python烧瓶变量?的主要内容,如果未能解决你的问题,请参考以下文章

将烧瓶请求/应用程序上下文复制到另一个进程

如何在 Python Pandas 回归模型中使用滞后时间序列变量?

python 基础笔记 — 数据类型之序列

如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程

Python基础面试题

教你搭建多变量时间序列预测模型LSTM(附代码数据集)