我是Python和Flask的新手,而且我使用Oracle,在学习Flask教程时,我的代码如下,但它真的很难闻,请帮助我解决这些问题,非常感谢!
1)是否需要显式释放连接以轮询?
2)如何优雅地实现轮询获取和释放?
def get_dbpool():
if not hasattr(g, 'db_pool'):
g.dbPool = connect_db()
return g.dbPool
@app.teardown_appcontext
def close_db(error):
if hasattr(g, 'db_pool'):
g.dbPool.close()
@app.route('/')
def hello_world():
db = get_dbpool().acquire()
cursor=db.cursor()
sql=''
cursor.execute(sql)
rows = cursor.fetchall()
cursor.close()
get_dbpool().release(db)
return json.jsonify(combines=rows)发布于 2018-01-31 23:18:03
没有必要显式释放到池的连接,除非您打算保持处理一段时间,并且不再需要该连接。当连接超出作用域(函数结束)时,cx_Oracle会自动将连接释放回池,当然,前提是您没有实现对该连接的循环引用!在这种情况下,您必须等待,直到执行垃圾收集。希望这能回答你的问题!
https://stackoverflow.com/questions/48517547
复制相似问题