Python MySQL服务器已断开连接重置错误10054烧瓶SqlAlchemy

Python MySQL服务器已断开连接重置错误10054烧瓶SqlAlchemy,python,mysql,azure,flask,sqlalchemy,Python,Mysql,Azure,Flask,Sqlalchemy,我有一个flask rest api应用程序,具有以下设置 安装的软件包 alembic==1.3.0 aniso8601==8.0.0 astroid==2.3.3 attrs==19.3.0 bcrypt==3.1.7 cffi==1.13.2 Click==7.0 colorama==0.4.1 Flask==1.1.1 Flask-Bcrypt==0.7.1 Flask-Migrate==2.5.2 flask-restplus==0.13.0 Flask-Script==2.0.6 F

我有一个flask rest api应用程序,具有以下设置

安装的软件包

alembic==1.3.0
aniso8601==8.0.0
astroid==2.3.3
attrs==19.3.0
bcrypt==3.1.7
cffi==1.13.2
Click==7.0
colorama==0.4.1
Flask==1.1.1
Flask-Bcrypt==0.7.1
Flask-Migrate==2.5.2
flask-restplus==0.13.0
Flask-Script==2.0.6
Flask-SQLAlchemy==2.4.1
Flask-Testing==0.7.1
importlib-metadata==0.23
isort==4.3.21
itsdangerous==1.1.0
Jinja2==2.10.3
jsonschema==3.1.1
lazy-object-proxy==1.4.3
Mako==1.1.0
MarkupSafe==1.1.1
mccabe==0.6.1
more-itertools==7.2.0
mysqlclient==1.4.5
pycparser==2.19
PyJWT==1.7.1
pylint==2.4.3
PyMySQL==0.9.3
pyrsistent==0.15.5
python-dateutil==2.8.1
python-editor==1.0.4
pytz==2019.3
six==1.13.0
SQLAlchemy==1.3.11
Werkzeug==0.16.0
wrapt==1.11.2
zipp==0.6.0
我有下面的产品配置,其中debug已启用为true,以了解堆栈跟踪

class ProductionConfig(Config):
    DEBUG = True
    user = 'xxxxxx@xxxxxx-mysqldbserver'
    passs = 'xxxxxx'
    host = 'xxxxxx-mysqldbserver.mysql.database.azure.com'
    db = 'ifsc'
    SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{0}:{1}@{2}/{3}'.format(user, passs, host, db)
我有一个初始化SQLAlchemy的
\uuuu init\uuuu.py
,如下所示

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt

from .config import config_by_name

db = SQLAlchemy()
flask_bcrypt = Bcrypt()

def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config_by_name[config_name])
    db.init_app(app)
    flask_bcrypt.init_app(app)
    return app
我有一个app.py,下面的代码实际运行flask应用程序。 app.py

问题:我面临mysql连接问题,azure的db出现以下错误。我已尝试将
max\u allowed\u packet
服务器参数设置为
1073741824
。但仍然看到这个错误

症状:对于新部署,它会做出响应,如果API闲置5到10分钟并发出相同的请求,它会出现以下错误。60分钟后,它再次开始工作,行为继续

堆栈跟踪:

sqlalchemy.exc.OperationalError sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError)(2006,“MySQL服务器已经消失了 (ConnectionResetError(10054,'强制执行现有连接 由远程主机关闭',无,10054,无())[SQL:SELECT bank_details.id作为bank_details_id,bank_details.bank作为 银行详情银行,银行详情。作为银行详情的ifsc, bank\u details.branch作为bank\u details\u branch,bank\u details.address作为 银行详情地址,银行详情。地区作为银行详情地区, bank\u details.city作为bank\u details\u city,bank\u details.state作为 bank\u details\u state,bank\u details.phone作为bank\u details\u phone, bank_details.micr作为bank_details_micr,bank_details.pin作为 bank\u details\u pin来自bank\u details,其中bank\u details.bank= %(bank_1)s和bank_details.city=%(city_1)s][参数:{'bank_1': “axis bank”、“city_1”:“goa”}(此错误的背景信息位于: )

回溯(最近一次调用上次)文件 “E:\sampled\sample\u api\env\Lib\site packages\pymysql\connections.py”, 第713行,在处理过程中写入字节self.\u sock.sendall(数据) 在上述异常中,发生了另一个异常:文件 “E:\sampled\sample\u api\env\Lib\site packages\sqlalchemy\engine\base.py”, 第1245行,在_execute_context self.dial.do_execute(文件 “E:\sampled\sample\u api\env\Lib\site packages\sqlalchemy\engine\default.py”, 第581行,在do_execute cursor.execute(语句、参数)文件中 “E:\sampled\sample\u api\env\Lib\site packages\pymysql\cursors.py”,第行 170,在执行结果=self.\u查询(查询)文件中 “E:\sampled\sample\u api\env\Lib\site packages\pymysql\cursors.py”,第行 328,在_queryconn.query(q)文件中 “E:\sampled\sample\u api\env\Lib\site packages\pymysql\connections.py”, 第516行,在查询self.\u执行\u命令(command.COM\u query,sql)文件中 “E:\sampled\sample\u api\env\Lib\site packages\pymysql\connections.py”, 第771行,在_execute_命令self._write_字节(数据包)文件中 “E:\sampled\sample\u api\env\Lib\site packages\pymysql\connections.py”, 第716行,in_write_字节引发错误操作错误(如上所述 异常是以下异常的直接原因:文件 “E:\sampled\sample\u api\env\Lib\site packages\flask\app.py”,第2463行, 在里面 调用返回self.wsgi\u应用程序(环境,启动响应)文件“E:\sampled\sample\u api\env\Lib\site packages\flask\app.py”,第2449行, 在wsgi_app response=self.handle_异常(e)文件中 “E:\sampled\sample\u api\env\Lib\site packages\flask\u restplus\api.py”, 第584行,错误为\u路由器返回原始\u处理程序(e)文件 “E:\sampled\sample\u api\env\Lib\site packages\flask\app.py”,第1866行, 在handle_异常重新释放(exc_类型,exc_值,tb)文件中 “E:\sampled\sample\u api\env\Lib\site packages\flask\u compat.py”,第行 38,在reraise raise value.with_回溯(tb)文件中 “E:\sampled\sample\u api\env\Lib\site packages\flask\app.py”,第2446行, 在wsgi_app response=self.full_dispatch_request()文件中 “E:\sampled\sample\u api\env\Lib\site packages\flask\app.py”,第1951行, 在完整的调度请求rv=self.handle用户异常(e)文件中 “E:\sampled\sample\u api\env\Lib\site packages\flask\u restplus\api.py”, 第584行,错误为\u路由器返回原始\u处理程序(e)文件 “E:\sampled\sample\u api\env\Lib\site packages\flask\app.py”,第1820行, 在handle_user_异常重新释放(exc_类型,exc_值,tb)文件中 “E:\sampled\sample\u api\env\Lib\site packages\flask\u compat.py”,第行 38,在reraise raise value.with_回溯(tb)文件中 “E:\sampled\sample\u api\env\Lib\site packages\flask\app.py”,第1949行, 在完整的调度请求rv=self.dispatch\u request()文件中 “E:\sampled\sample\u api\env\Lib\site packages\flask\app.py”,第1935行, 发送请求返回中 self.view\u functionsrule.endpoint文件 “E:\sampled\sample\u api\env\Lib\site packages\flask\u restplus\api.py”, 第325行,在wrapper resp=resource(*args,**kwargs)文件中 “E:\sampled\sample\u api\env\Lib\site packages\flask\views.py”,第89行, 在视图中返回self.dispatch_请求(*args,**kwargs)文件 “E:\sampled\sample\u api\env\Lib\site packages\flask\u restplus\resource.py”, 第44行,在调度请求resp=meth(*args,**kwargs)文件中 “E:\sampled\sample\u api\env\Lib\site packages\flask\u restplus\marshalling.py”, 第243行,在wrapper resp=f(*args,**kwargs)文件中 “E:\sampled\sample\u api\api\main\controller\ifsc\u controller.py”,第行 37,在get banks=get\u banks\u by\u name\u city(bank,city)文件中 “E:\sampled\sample\u api\api\main\service\ifsc\u service.py”,中的第28行 按城市名称获取银行返回Ifsc.query.filter(银行=名称,城市= 城市)。所有()文件 “E:\sampled\sample\u api\env\Lib\site packages\sqlalchemy\orm\query.py”, 第3211行,在所有返回列表(self)文件中 “E:\sampled\sample\u api\env\Lib\site packages\sqlalchemy\orm\query.py”, 第3367行,在iter中返回self.\u执行\u和\u实例(上下文) 文件 “E:\sampled\sample\u api\env\Lib\site packages\sqlalchemy\orm\query.py”, 第3392行,in_execute_和_实例result= conn.execute(querycontext.statement,self.\u p
from flask_cors import CORS, cross_origin
from api import blueprint

from api.main import create_app, db
from api.main.seed import seed_db

app = create_app(os.getenv('BOILERPLATE_ENV') or 'prod') # dev|prod
CORS(app)
app.register_blueprint(blueprint)
app.app_context().push()

if __name__ == '__main__':
    app.run()
SET SESSION MAX_EXECUTION_TIME=20000;
SET GLOBAL MAX_EXECUTION_TIME=200000;
SET session wait_timeout=30000;
SET @@GLOBAL.wait_timeout=30000;
with app.app_context():
    db.init_app(app)