烧瓶全局变量错误

时间:2020-09-01 05:42:47

标签: python flask

arr = ["a","b","c","d","e"]
i = 0
char = arr[0]

@app.route('/<key>', methods = ['GET', 'POST'])
def classNeeds(key):
    global cha,i
    if cha == key:
        if request.method == 'POST':
            i = i+1
            cha = arr[i]
            return 'ok'
        return render_template('index.html') 
    return 'wrong url'

我写了一个flask函数,它可以在localhost上正常运行,并且在终端上没有显示逻辑错误。但是,当我在apache2服务器上部署此应用程序时,出现了逻辑错误。该错误类似于,在使用arr[0]之后,用户过一会儿仍然可以通过使用arr[0]来访问此功能。但从逻辑上讲,url/arr[1]应该是访问此路由的唯一方法。我不确定如何发生此错误。任何建议都会有所帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您使用的是生产服务器,通常会有多个worker进程为您的应用提供服务。传入连接可以与这些进程中的任何一个进行对话。如果两个连接不在同一个进程中对话,则它们将处理不同的全局变量,因此您将看不到同步行为。

如果要在不同连接之间同步状态,则应尝试使用适当的数据库来存储状态。