- 28
- 08月
在云引擎BAE/SAE中,MySQL连接超时时间比较短,一般为30s,而不是默认的8小时,所以你需要在代码中检查是否超时,是否需要重连。
对于使用sqlalchemy的用户,需要在请求处理结束时调用 db.session.close()
,关闭当前 session
,将mysql连接还给连接池,并且将连接池的连接recyle时间设的小一点(推荐为10s)。
关键代码如下:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
app.config['SQLALCHEMY_POOL_RECYCLE'] = 10
db = SQLAlchemy(app)
@app.teardown_request
def teardown_request(response_or_exc):
db.session.remove()