环境:
dmPython2.5.5
SQLAlchemy1.4.15
sqlalchemy_dm==1.4.39
同一个查询SQL(SELECT语句),在应用程序启动后的前几次能查询成功,成功几次后一直查询失败,报错ERR(-608):请求执行超时。
重点:
1、应用程序启动或者重启后的前几次查询能成功,成功几次后(次数2-3次不定)查询报错:请求执行超时,日志显示[ERR(-608)]
2、代码断点调试:当SELECT语句[1]出现608异常时,我在代码中打了断点,把SQL语句改为了其他SELECT语句[2],结果是可以正常查询,切换回SELECT语句[1]又提示608异常了,因此,可以证明数据库连接是有效的,只是无法执行SELECT语句[1]
File "/usr/local/python3/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1770, in _execute_context
self.dialect.do_execute(
File "/usr/local/python3/lib/python3.8/site-packages/sqlalchemy_dm-1.4.39-py3.8.egg/sqlalchemy_dm/base.py", line 1815, in do_execute
super(DMDialect, self).do_execute(cursor, statement, parameters, context)
File "/usr/local/python3/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 717, in do_execute
cursor.execute(statement, parameters)
dmPython.DatabaseError: [CODE:-608]session request timeout
(Background on this error at: http://sqlalche.me/e/14/4xp6)
提示[CODE:-608]session request timeout
连接池创建配置如下
def db_create(db_source, cfg):
url = "dm+dmPython://{user}:{pswd}@{host}:{port}".format(
user=cfg.get(db_source, "user"),
pswd=cfg.get(db_source, "pswd"),
host=cfg.get(db_source, "host"),
port=cfg.get(db_source, "port")
)
return create_engine(url, pool_size=10, max_overflow=10, pool_timeout=360, pool_recycle=3600)
你好啊,问题解决了吗?
连接参数新增connection_timeout参数。比如,如果你是用的SqlAlchemy连接串的话:
dm+dmPython://{username}:{password}@{host}:{port}?schema={service}&connection_timeout=1200
调整一下pool_size和pool_timeout参数呢?相关SQL可以在数据库执行吗?