3
全局变量在烧瓶中是线程安全的吗?如何在请求之间共享数据?
在我的应用程序中,公共对象的状态通过发出请求来更改,并且响应取决于状态。 class SomeObj(): def __init__(self, param): self.param = param def query(self): self.param += 1 return self.param global_obj = SomeObj(0) @app.route('/') def home(): flash(global_obj.query()) render_template('index.html') 如果我在开发服务器上运行它,我希望得到1、2、3,依此类推。如果同时从100个不同的客户发出请求,会出问题吗?预期结果将是100个不同的客户端各自看到一个从1到100的唯一数字。或者会发生以下情况: 客户端1查询。self.param增加1。 在执行return语句之前,线程将切换到客户端2。self.param再次增加。 线程切换回客户端1,并向客户端返回数字2,例如。 现在,该线程移至客户端2,并向其返回数字3。 由于只有两个客户,因此预期结果是1和2,而不是2和3。跳过了一个数字。 当我扩展应用程序时,这是否真的会发生?我应该考虑使用什么替代全局变量?