【问题标题】:Flask SQLAlchemy (mysql) connection close (connection timeout)Flask SQLAlchemy(mysql)连接关闭(连接超时)
【发布时间】:2019-12-28 15:36:55
【问题描述】:

我正在使用 Flask SQLAlchemy 连接到我的 mysql 数据库,但它的默认 wait_timeout 为 120 秒,所以在我查询我的用户并且网络有一段时间没有使用后,我得到一个错误

(2013, 'Lost connection to MySQL server during query')

我的 db.py

的重要部分
app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://urltomyserver'
app.config['SQLALCHEMY_POOL_RECYCLE'] = 10
app.config['SQLALCHEMY_POOL_TIMEOUT'] = 120
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)

if __name__ == 'createdb':
    db.reflect()
    db.drop_all()
    db = SQLAlchemy(app)

还有我的views.py

  @core.route('/')
    def index():
        userzy = sftpuser.query.all()
        return render_template('index.html', userzy=userzy)
        #I'D LIKE TO CLOSE MY CONNECTION HERE

我在def index中返回模板后尝试了这些

  db.session.close()
    db.close()
    db.dispose()
    db.session.close()
    db.engine.dispose()
    db.session.commit()

还有这个

@app.teardown_appcontext
def teardown_db(error):
    db.session.close()
    db.engine.dispose()

但这对我没有太大帮助,任何人都知道解决方案,为什么即使我设置了池,我也会不断出错?

【问题讨论】:

标签: python mysql python-3.x flask flask-sqlalchemy


【解决方案1】:

yiu 是否尝试更改此配置:app.config['SQLALCHEMY_POOL_TIMEOUT'] = 120???

【讨论】:

  • 是的,我尝试了许多选项,例如 120-1、60、30、40、100,超过 120。没有任何帮助,问题是为什么?
  • 我也使用了stackoverflow.com/questions/42163359/…,但没有帮助我。
  • 我还发现了这个stackoverflow.com/questions/52992361/… soo 是否有可能无法在我使用的“最小应用程序模型”上修复它?我应该将我的整个应用程序重新配置为使用引擎模型的声明式吗?
  • 您是否尝试删除 app.config['SQLALCHEMY_POOL_TIMEOUT'] = 120?或将值更改为无? ['SQLALCHEMY_POOL_TIMEOUT'] 自 v2.4 起已弃用,并将在 v3.0 中删除。并检查此stackoverflow.com/a/35640876/9988043
  • 我使用的是 v2,是的。我试图将值更改为无,或将其删除。在您发布的链接中,SQLAlchemy 是基于引擎的,我的不是。所以我想知道是否有可能在我的应用程序上修复它,或者我必须重写配置,以便它可以在引擎而不是 app.config 上工作
猜你喜欢
  • 2015-07-28
  • 1970-01-01
  • 2015-09-11
  • 2015-05-16
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 2017-07-07
  • 2016-11-12
相关资源
最近更新 更多