
我有一个项目是 python+fastapi+tortoise orm+mysql 。
数据库连接设置:
app = FastAPI() TORTOISE_COnFIG= { 'connections': { # Dict format for connection 'default': { 'engine': 'tortoise.backends.mysql', 'credentials': { 'host': db_host, 'port': db_port, 'user': db_user, 'password': db_pass, 'database': db_name, } }, # Using a DB_URL string # 'default': 'postgres://postgres:qwerty123@localhost:5432/events' }, 'apps': { 'models': { 'models': ['api.news.models', 'aerich.models'], # If no default_connection specified, defaults to 'default' 'default_connection': 'default', } }, 'use_tz': False, 'timezone': 'Asia/Shanghai', 'echo': True, } register_tortoise( app=app, cOnfig=settings.TORTOISE_CONFIG, ) 当访问一次数据库时,在 MySQL 中执行show processlist会出现一条状态为sleep的连接。当这个连接过期(超过wait_timeout最大值)会把这个连接清理掉。
当再次访问数据库时,会得到一个报错:ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。。
我应该如何捕获这个错误,并实现与数据库重新建立连接?
目前这个错误也不会终端程序,会重新建立连接。但我还是想搞清除,在哪里可以捕获这个异常,让后处理它并重新建立连接。
请各位 v 友不吝赐教