gpt4 book ai didi

flask - Flask 应用程序中的内存数据

转载 作者:行者123 更新时间:2023-12-03 16:51:53 29 4
gpt4 key购买 nike

我认为在 Flask 中拥有实例变量的正确方法是添加用户和 session ,但我正在尝试测试一个概念,我还不想经历所有这些。我试图让一个网络应用程序将图像加载到一个变量中,然后可以对其执行不同的图像操作。显然,您不希望在每个新请求上都对图像执行一系列操作,因为这将非常低效。

有没有办法获得 app.var在 Flask 中,我可以从不同的路线访问吗?我试过使用全局上下文和 Flask 的 current_app ,但我得到的印象不是他们的目的。

我的蓝图代码是:

import os
from flask import Flask, url_for, render_template, \
g, send_file, Blueprint
from io import BytesIO
from PIL import Image, ImageDraw, ImageOps

home = Blueprint('home', __name__)

@home.before_request
def before_request():
g.img = None
g.user = None

@home.route('/')
def index():
return render_template('home/index.html')

@home.route('/image')
def image():
if g.img is None:
root = os.path.dirname(os.path.abspath(__file__))
filename = os.path.join(root, '../static/images/lena.jpg')
g.img = Image.open(filename)
img_bytes = BytesIO()
g.img.save(img_bytes, 'jpeg')
img_bytes.seek(0)
return send_file(img_bytes, mimetype='image/jpg')

@home.route('/grayscale', methods=['POST'])
def grayscale():
if g.img:
print('POST grayscale request')
g.img = ImageOps.grayscale(img)
return "Grayscale operation successful"
else:
print('Grayscale called with no image loaded')
return "Grayscale operation failed"
/image route 正确返回图像,但我希望能够调用 /grayscale ,执行该操作,并能够再次调用 /image并让它从内存中返回图像而不加载它。

最佳答案

您可以在 session 变量中保存一个键,并使用它来识别全局字典中的图像。但是,如果您使用多个 Flask 应用程序实例,这可能会导致一些麻烦。但是有一个就可以了。否则,您可以在与多个工作人员一起工作时使用 Redis。我没有尝试过以下代码,但它应该显示了这个概念。

from flask import session
import uuid

app.config['SECRET_KEY'] = 'your secret key'
img_dict = {}

@route('/image')
def image():
key = session.get('key')
if key is None:
session['key'] = key = uuid.uuid1()

img_dict[key] = yourimagedata

@home.route('/grayscale', methods=['POST'])
def grayscale():
key = session.get('key')
if key is None:
print('Grayscale called with no image loaded')
return "Grayscale operation failed"
else:
img = img_dict[key]
print('POST grayscale request')
g.img = ImageOps.grayscale(img)
return "Grayscale operation successful"

关于flask - Flask 应用程序中的内存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44724917/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com