我在Snowflake中有一个数据库,我使用Snowflake's Python Connector访问数据库并从Flask服务器进行数据库查询,如下所示:
ctx = snowflake.connector.connect(
user='username',
password='pass',
account='account',
client_session_keep_alive=True
)
cs = ctx.cursor()
try:
cs.execute("SELECT current_version()")
one_row = cs.fetchone()
print("Successfully connected to snowflake version: {}".format(one_row[0]))
cs.close()
except Exception as e:
print("Snowflake connection error: {}".format(e))
cs.close()
字符串
我将snowflake连接会话定义为一个全局ctx变量,可以从任何Flask API函数访问。
启动Flask服务器后,一切正常,但如果连续几个小时没有API调用,则会抛出错误:
snowflake.connector.errors.ProgrammingError: 390114 (08001): Authentication token has expired. The user must authenticate again.
型
正如你所看到的,我在Snowflake connect API中保留了client_session_keep_alive=True
参数来保持会话活动,但不知何故仍然失败。我探索了这个问题,但没有得到任何结论性的信息。所以我想知道如何保持数据库连接会话活动,或者我必须为每个查询创建新的连接会话吗?
任何建议都会很有帮助。
1条答案
按热度按时间lg40wkob1#
根据这个community note,除了不时地发出伪sql之外,你没有什么可以做的,但是我注意到有一个CLIENT_SESSION_KEEP_ALIVE_HEARTBEAT_FREQUENCY参数,你可以先测试see this。