python - 类变量返回不正确?
问题描述
我正在使用一个类来跨烧瓶路线共享变量。
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 页面出现问题。为什么会发生这种情况,我该如何解决?
解决方案
使用全局变量来保存状态只能在狭窄的情况下工作。
Flask 开发服务器喜欢在检测到更改时自行重启,这可能是您偶尔看到的情况[]
。您可以尝试运行--no-reload
以禁用该行为。
如果您正在制作原型并希望自动重新加载,那么请尝试将数据保存在您按需读取(和写入)的文件中,而不是使用全局文件。如果您担心性能,请尝试一下。你可能会感到惊喜。
推荐阅读
- c# - 页面刷新后保留 GridView 的可见属性(ASP.NET、C#)
- wso2esb - 从 WSO2 中的本地条目 XML 获取数据
- excel - Excel vba:网格线帮助
- javascript - 在回调函数内部更改变量并在外部使用
- php - 具有相同收据编号的两次交易
- html - 单击我的博客后,页面顶部的博主标签文本变小/不同。我如何解决它?
- bash - 缺少 google-services.json 并运行“make bootstrap”(Kickstarter 应用程序 android studio)
- typescript - ES6 / Typescript - 键入箭头函数的值
- php - 如何在不注销其他用户的情况下同时登录用户
- angularjs - 如何根据Angular 4中的条件在表单控件上操作(有效/无效)表单验证