You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Snowflake Python连接器异步查询默认超时时间

问题现象

通过Snowflake Python连接器运行异步查询时,接口返回提示查询运行时长超过300秒会被中止,测试代码如下:

cursor_result = sf_conn.cursor().execute_async(
                  "select 1 as test_column", timeout=500)

接口返回结果如下:

'queryId':'01a00000-0404-bce3-0000-00013778eb6f'
'getResultUrl':'/queries/01a54712-0404-bce3-00c6-55013778eb6f/result'
'queryAbortsAfterSecs':300
'progressDesc':None

传入的timeout参数未生效,返回的queryAbortsAfterSecs值仍为300秒,需要调整该默认行为,修改300秒的默认超时阈值。

原因

execute_async方法接收的timeout参数仅控制客户端侧发起HTTP请求的等待超时,不作用于Snowflake服务端的查询生命周期管理。返回值中的queryAbortsAfterSecs是服务端异步查询的默认自动中止阈值,固定默认值300秒,和客户端传入的timeout参数无关联,因此直接传timeout=500不会修改该值。

调整方法

服务端侧的查询超时阈值由参数STATEMENT_TIMEOUT_IN_SECONDS控制,需要通过SQL语句显式设置该参数覆盖默认值,支持两种设置粒度:

  • 语句级配置:仅对当前单条异步查询生效,适合不同查询需要不同超时时间的场景
# 单条查询指定500秒超时
query_sql = """
set STATEMENT_TIMEOUT_IN_SECONDS = 500;
select 1 as test_column
"""
cursor_result = sf_conn.cursor().execute_async(query_sql)
  • 会话级配置:对当前连接下所有后续执行的同步、异步查询生效,适合统一调整连接下所有查询超时的场景
# 连接建立后先执行会话参数配置
sf_conn.cursor().execute("alter session set STATEMENT_TIMEOUT_IN_SECONDS = 500")
# 后续执行异步查询无需重复配置
cursor_result = sf_conn.cursor().execute_async("select 1 as test_column")

配置完成后重新发起异步查询,返回结果中的queryAbortsAfterSecs会同步更新为你设置的数值,不会再触发300秒默认中止逻辑。

注意:如果Snowflake账号、用户、虚拟仓库层级配置了强制的STATEMENT_TIMEOUT_IN_SECONDS上限,会话/语句级设置的超时值不能超过该上限,否则配置不生效。

内容的提问来源于stack exchange,提问作者Sasan Ahmadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:45:55