【问题标题】:Flask Security Too Mysql connection problemFlask Security Too Mysql连接问题
【发布时间】:2020-12-19 10:26:24
【问题描述】:

我也在使用 Flask Security (https://flask-security-too.readthedocs.io/en/stable/index.html) 来验证测试服务器上的用户。我按照文档中的说明启动并运行它。这一切都很完美,但是由于某种原因,应用程序正在失去与 MySQL 服务器的连接并开始返回内部服务器错误。在 Sentry 中,我看到以下错误消息:

(sqlalchemy.exc.InvalidRequestError) 在无效事务回滚之前无法重新连接 [SQL:SELECT anon_1.user_id AS anon_1_user_id,anon_1.user_email AS anon_1_user_email,anon_1.user_first_name AS anon_1_user_first_name,anon_1.user_last_name AS anon_1_user_last_name,anon_1.user_password AS anon_1_user_password,anon_1.user_last_login_at AS anon_1_user_last_login_at,anon_1.user_current_login_at AS anon_1_user_current_login_at,anon_1.user_last_login_ip AS anon_1_user_last_login_ip, anon_1.use...

当网站在夜间几个小时没有访问时,通常会出现此错误。重启 Flask 应用即可解决问题。

我尝试更改 SqlAlchemy 选项,但没有成功。因为我在专用服务器上使用 MySQL 数据库,所以我也尝试使用本地 MySQL 数据库,我在这里遇到了同样的问题。

我想先解决这个问题,然后再花更多时间将其集成到我的网站中。

有谁知道什么会导致这个问题?

【问题讨论】:

    标签: mysql flask flask-sqlalchemy flask-security


    【解决方案1】:

    我在使用 psycopg2 时看到了这一点(并且存在错误) - PRIOR 错误(例如在类型不兼容的列上选择 - 导致连接永久不可用。根据我的测试 - 没有一个明显的方法甚至知道这已经发生了,直到引发此错误的查询 - 因为它是一个编码错误 - 我修复了该区域的一些错误。请注意,这是与 psycopg2 - 我不认为你正在使用它。 我会查看日志或打开完整的 mysql 查询日志以查看晚上可能会查询的内容。

    另一个想法——我认为这不会导致这个错误——是许多数据库在一段时间后断开连接。确保您使用的是 Flask-SQLAlchemy 2.4.0 或更高版本并放入配置: app.config["SQLALCHEMY_ENGINE_OPTIONS"] = {"pool_pre_ping": True}

    这将在返回要使用的连接之前确保连接有效。

    【讨论】:

    • 感谢您的回复。你是对的,我没有使用 psycopg2 所以我猜这个问题与它无关。看起来 MySQL 连接已断开。我正在使用最新版本的 SqlAlchemy 并添加了 pool_pre_ping 选项。我也尝试在 Mysql 设置中增加超时时间,但不幸的是这并没有解决问题。
    • 那么我将启用完整的查询日志记录并尝试在失败的查询之前找到查询......
    猜你喜欢
    • 2021-10-02
    • 2018-06-09
    • 2019-09-10
    • 2010-09-23
    • 2011-02-16
    • 1970-01-01
    • 2021-01-09
    相关资源
    最近更新 更多