首页 > 解决方案 > 类变量返回不正确?

问题描述

我正在使用一个类来跨烧瓶路线共享变量。

class Manager():
    def __init__(self):
        self.passwords = []
    def setRestock(self, password: str, copies: str):
        self.passwords.append(password)

这是我班级代码的一部分。在我用几个密码设置 self.passwords 的值后,它看起来像这样:

['testpassword1', 'testpassword2', 'testpassword3']

我创建了一个返回 self.passwords 值的路由

@bp.route('/getPasswords', methods=['GET'])
def getPasswords():
    return jsonify({
        'status': 'ok',
        'data': manager.passwords
    }), 200

预期的结果应该是:

{"data":['testpassword1', 'testpassword2', 'testpassword3'],"status":"ok"}

当我向该路由发出请求时,会显示预期的结果,但在每 5-6 个请求后,它会随机返回{"data":[],"status":"ok"}。然后再次发出请求会返回正确的东西。

我的问题是 self.passwords 被[]随机返回,导致 HTML 页面出现问题。为什么会发生这种情况,我该如何解决?

标签: pythonclassflask

解决方案


使用全局变量来保存状态只能在狭窄的情况下工作。

Flask 开发服务器喜欢在检测到更改时自行重启,这可能是您偶尔看到的情况[]。您可以尝试运行--no-reload以禁用该行为。

如果您正在制作原型并希望自动重新加载,那么请尝试将数据保存在您按需读取(和写入)的文件中,而不是使用全局文件。如果您担心性能,请尝试一下。你可能会感到惊喜。


推荐阅读