首页 > 解决方案 > Snowflake Authentication Token expired (390114) - Snowflake-SQLAlchemy 是否有心跳代码?

问题描述

我开发了一个使用 SQLAlchemy 连接到 Snowflake DB 作为后端的 Flask 应用程序。如果网站闲置超过 4 小时,我会遇到 Snowflake 身份验证令牌过期问题。我在谷歌中查看并找到了答案

https://github.com/snowflakedb/gosnowflake/issues/160

但它似乎对 Snowflake-SQLAlchemy 无效。

我使用 APScheduler 实现了心跳代码,它每 50 分钟触发一次“选择 1”,但如果会话在浏览器 (SSO) 中处于活动状态,则会引发“身份验证令牌已过期”错误。

from sqlalchemy import create_engine
engine = create_engine('snowflake://<connection-string>' )
connection = engine.connect()
names = connection.execute_query("select names from employees")

def sensor():
    """ Function for scheduling purposes. """
    v = cursor.execute("""select 1""")
    v = v.fetchall()
    print(v)

sched = BackgroundScheduler(daemon=True)
sched.add_job(sensor,'interval',minutes=50)
sched.start()

标签: python-3.xflasksqlalchemyflask-sqlalchemy

解决方案


https://docs.snowflake.net/manuals/sql-reference/parameters.html#client-session-keep-alive

尝试 Client Session Keep Alive 以保持会话处于活动状态。


推荐阅读