Hay tal cosa como el alcance de aplicación de python variables en el Frasco? Me gustaría implementar algunas primitivas de mensajería entre los usuarios, y compartida de la caché de datos. Por supuesto, es posible implementar esto a través de una base de datos, pero quería saber que tal vez no hay una base de datos libre y tal vez más rápido de enfoque. Idealmente, si la variable compartida sería un vivir objeto de python, pero mis necesidades serían satisfechas con cadenas y enteros, también.

Edición: complementa con (no de trabajo) ejemplo

from flask import g

@app.route('/store/<name>')
def view_hello(name=None):
    g.name = name
    return "Storing " + g.name

@app.route("/retrieve")
def view_listen():
    n = g.name
    return "Retrieved: " + n

Tratando de recuperar g.nombre, esto desencadena error:
AttributeError: ‘_RequestGlobals’ el objeto no tiene ningún atributo ‘nombre’

OriginalEl autor Passiday | 2013-05-09

2 Comentarios

  1. 3

    No estoy seguro de si esto es una buena idea o no, pero he estado usando esto para compartir datos fácilmente entre las solicitudes:

    class MyServer(Flask):
    
        def __init__(self, *args, **kwargs):
                super(MyServer, self).__init__(*args, **kwargs)
    
                #instanciate your variables here
                self.messages = []
    
    app = MyServer(__name__)
    
    @app.route("/")
    def foo():
        app.messages.append("message")
    Este enfoque supone que es el mismo objeto de aplicación que se comparte entre las solicitudes y que nunca muere. Estoy bastante seguro de que no se mantenga en escenarios más complejos que la simple dev servidor web que está construido dentro del Matraz de marco.
    Sí, estás en lo correcto. Por muy pequeño y simple de las aplicaciones es una manera fácil de compartir los datos, sin embargo.

    OriginalEl autor t.animal

  2. -7

    Desde el matraz de 0.10 flask.g sería el camino a seguir.

    En versiones anteriores matraz.g se almacena en el contexto de la solicitud y se borra entre las solicitudes. Si estás utilizando una versión anterior se debe almacenar su aplicación a nivel de cosas en flask.current_app

    El documento dice flask.g es un objeto especial que asegura que sólo es válida para la solicitud activa y que devolverá valores diferentes para cada solicitud. Claramente no es la respuesta correcta a esta pregunta.

    OriginalEl autor hyrax

Dejar respuesta

Please enter your comment!
Please enter your name here