有关于这个主题的阅读,我做到了。我无法一辈子使用它。
我有一个Flask应用程序,该应用程序包含多个蓝图,每个蓝图都使用MariaDB服务器上的一个或两个不同的数据库。所有蓝图都遵循以下模式:
from .. import common
Session = common.mysql_sessionmaker("stammdaten")
@blp.route('/login', methods=["POST"])
def login_form():
db = Session()
.. common中的mysql_sessionmaker函数如下所示:
def mysql_sessionmaker(dbname):
engine = create_engine(
"mysql://dham@localhost" + '/' \
+ dbname + '?charset=utf8mb4',
pool_recycle=60,
pool_pre_ping=True)
return scoped_session(sessionmaker(engine))
因此,我已经用尽了有关此问题的所有提示和技巧:
但无济于事。当然,我无法重现此错误。这是公司Intranet上一个相当低频的站点(每天打几十个电话),无论何时使用它,它都可以正常工作。但是每天早晨,我都会检查apache日志,以查找来自SQLAlchemy内部深处的巨大python堆栈转储信息。
在绝望中,我什至尝试将整个数据库设置代码移到@before_request函数中,以便每个请求都完全从头开始。还是一样的错误。
同一台服务器上的一堆PHP脚本根本没有数据库问题。
mariadb服务器是现成的RedHat安装版本5.5.56。我不使用flask-sqlalchemy是因为我不了解它的作用,并且因为它不支持多个数据库连接(上次检查)。
[EDIT]错误不是由过长的查询引起的。当我重试有问题的查询时,它们会在不到一秒钟的时间内返回。