Wie benutze AfterRequest Decorator, um eine Verbindung zu schließen, nachdem die Anfrage bearbeitet wurde? Ich verwende den before_request für die Verbindung für jede Anforderung api Öffnung wie folgt: Verwendung sqlalchemy Kern 1.0.8 und postgresql 9,5:Wie benutze AfterRequest in der Flask Datenbankverbindung und Python zu schließen?
#engine = create_engine(os.environ.get("DB_URL"))
DB_URL="postgresql://mowner:[email protected]/mydb"
@app.before_request
def before_request():
engine = create_engine(DB_URL, strategy='threadlocal')
conn = engine.connect()
@app.after_request
def after_request(conn):
if conn is not None:
print 'closing connection'
conn.close()
Probe API-Aufruf:
@app.route('/api/v1.0/categories', methods=['GET'])
def categories_list():
'''
Return categories list
'''
if 'id' in session:
categories_list = []
s = select([categories])
rs = conn.execute(s)
if rs.rowcount > 0:
for r in rs:
categories_list.append(dict(r))
rs.close()
# print 'this doesnt execute'
return jsonify({'categories list': categories_list}), 200
return jsonify({'message': "UNAUTHORIZED"}), 401
Die Ansichten sind Anrufe, die api geben nur eine Liste von Objekten zurück, hinzugefügt oder bearbeiten Objekt und eine Nachricht. Wie genau muss das Verbindungsobjekt an den After_request Decorator übergeben werden? Ich konnte der Dokumentation nicht wirklich folgen Exakter Code wird mir helfen.
Die Verwendung von 'conn' in' categories_list 'wirft keinen Fehler? –
@GarbageCollector gibt es eine before_request, ich habe es nicht benutzt in __init__.py – user956424
Sie können [flask.g] (http://flask.pocoo.org/docs/0.12/api/#flask. g) um ein globales Datenbankverbindungsobjekt zu erzeugen. –