2
リクエストの処理後に接続を閉じるためにafter_requestデコレータを使用するにはどうすればよいですか?私は次のように各API要求のための接続を開くためbefore_requestを使用: SQLAlchemyのコア1.0.8とPostgreSQL 9.5を使用した:フラスコ内のafter_requestを使用してデータベース接続とPythonを閉じるにはどうすればいいですか?
#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()
サンプルAPI呼び出し:
@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
ビューがどのAPIコールでありますオブジェクトのリストを返したり、オブジェクトやメッセージを編集したりするだけです。どのようにして接続オブジェクトをafter_requestデコレータに渡すのですか?私は実際に文書に従うことができませんでした 正確なコードは私を助けるでしょう。
'categories_list'の内部で 'conn'を使用してもエラーは発生しませんか? –
@GarbageCollector before_requestがありますが、これ以外には__init__.pyで使用しました – user956424
[フルスコイル](http://flask.pocoo.org/docs/0.12/api/#flask)を使用できます。 g)グローバルデータベース接続オブジェクトを作成する。 –