代码之家  ›  专栏  ›  技术社区  ›  woky

WSGI、全局变量和关闭挂钩[重复]

  •  0
  • woky  · 技术社区  · 6 年前

    在我的应用程序中,通过发出请求更改公共对象的状态,并且响应取决于状态。

    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。
    2. 在执行return语句之前,线程将切换到客户机2。 自我参数 再次递增。
    3. 现在线程移动到客户机2,并将数字3返回给他/她。

    由于只有两个客户,预期结果是1和2,而不是2和3。跳过了一个数字。

    当我扩展应用程序时,这真的会发生吗?除了全局变量,我还应该考虑哪些替代方案?

    0 回复  |  直到 7 年前