烧瓶全局变量错误


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]应该是访问该路由的唯一途径。我不知道这个错误是怎么发生的。任何建议都会有帮助。非常感谢。

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

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

最新更新