你如何序列化一个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 == 'main': 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 回归模型中使用滞后时间序列变量?