Snowpark Container Services:失败批处理重试逻辑和 DESC FUNCTION 命令输出中新列的变更¶
失败批处理请求的重试逻辑的变更¶
当您执行包含服务函数的查询时,Snowflake 会发送一系列 HTTP 请求,每个请求都包含指向服务的一批行。如果服务返回错误(HTTP 错误 404、429、500、502、503 或 504),Snowflake 会重试请求。当 Snowflake 重试时,它会在指数回归算法确定的延迟后重新发送同一批次。
- 变更前:
- 如果重试之间的总睡眠时间达到 1 小时,Snowflake 会将批处理执行标记为失败,并且服务函数执行也会失败。 
- 变更后:
- 默认情况下,Snowflake 会重试失败的批处理 3 次。您可以执行 CREATE FUNCTION 或 ALTER FUNCTION 命令与 MAX_BATCH_RETRIES 参数,选择性指定您希望 Snowflake 重试批处理的次数。例如: - 对于 CREATE FUNCTION 命令,指定 MAX_BATCH_RETRIES 参数,如下所示: - CREATE [ OR REPLACE ] FUNCTION <name> ( [ <arg_name> <arg_data_type> ] [ , ... ] ) RETURNS <result_data_type> … [ MAX_BATCH_RETRIES = <integer> ] AS '<http_path_to_request_handler>' … 
- 对于 ALTER FUNCTION 命令,使用 - SET MAX_BATCH_RETRIES = integer设置重试次数:- ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET MAX_BATCH_RETRIES = <integer> 
 
DESCRIBE FUNCTION (Snowpark Container Services) 命令:输出中的新列¶
启用此行为变更捆绑包后,DESCRIBE FUNCTION (Snowpark Container Services) 命令的输出包括以下新列:
| 列名称 | 描述 | 
|---|---|
| MAX_BATCH_RETRIES | 服务函数处理的每批行的最大重试次数。 | 
| ON_BATCH_FAILURE | 当一批行达到最大重试限制时,服务函数的行为。 | 
| BATCH_TIMEOUT_SECS | Snowflake 在终止批处理请求之前等待处理单批行(包括重试和异步请求轮询)的最长时间。 | 
参考:1938