Variables globales del matraz

Estoy intentando descubrir cómo trabajar con variables globales en Flask:

gl = {'name': 'Default'} @app.route('/store/') def store_var(name=None): gl['name'] = name return "Storing " + gl['name'] @app.route("/retrieve") def retrieve_var(): n = gl['name'] return "Retrieved: " + n 

Almacenar el nombre y recuperarlo de otro cliente funciona bien. Sin embargo, esto no parece correcto: un simple diccionario global en el que cualquier sesión puede generar objetos complejos de forma bastante simultánea, ¿realmente funciona sin consecuencias graves?

No, no funciona, no fuera del simple servidor de desarrollo de Flask.

Los servidores WSGI escalan de dos maneras; mediante el uso de hilos o bifurcando el proceso. Un diccionario global no es un almacenamiento seguro para subprocesos, y cuando se utilicen cambios de multiprocesamiento en globales, no se compartirán. Si ejecuta esto en un proveedor PAAS como el servidor de aplicaciones de Google, los procesos ni siquiera se bifurcan; incluso se ejecutan en máquinas completamente separadas .

Utilice algún tipo de almacenamiento backend en su lugar; un servidor memcached, un servidor de base de datos, algo para controlar el acceso concurrente y compartir los datos a través de los procesos.