

 Amazon Redshift dejará de admitir la creación de UDF de Python después del 30 de junio de 2026. Empezaremos a aplicarlo por fases. Para obtener más información sobre los detalles del fin de vida de Python y las opciones de migración, consulte la [entrada del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/) que se publicó el 30 de junio de 2025. 

# Reducción de las llamadas a la API con el sondeo largo
<a name="data-api-calling-considerations-long-polling"></a>

De forma predeterminada, las operaciones de la API de datos devuelven una respuesta inmediata. Si la operación va en contra de una instrucción en curso, debe sondear repetidamente hasta que la instrucción alcance un estado terminal. Con el sondeo largo, establezca `WaitTimeSeconds` en un valor comprendido entre 1 y 30. La API retrasará la devolución de una respuesta sincrónica hasta que la instrucción finalice o se alcance `WaitTimeSeconds`, lo que ocurra primero.

El sondeo largo es compatible con [DescribeStatement](data-api-calling-cli-describe-statement.md), [ExecuteStatement](pass-sql-statements.md#data-api-calling-cli-execute-statement), [BatchExecuteStatement](pass-sql-statements.md#data-api-calling-cli-batch-execute-statement), [GetStatementResult](data-api-calling-cli-get-statement-result.md) y [GetStatementResultV2](data-api-calling-cli-get-statement-result.md).

Cuando una operación usa `WaitTimeSeconds` para enviar una nueva instrucción o esperar una ya existente:
+ Si la instrucción **se completa** dentro del tiempo de espera, la respuesta incluye el estado terminal o los datos del resultado, según la operación.
+ Si la instrucción **sigue ejecutándose** al expirar el tiempo de espera, la respuesta devuelve el estado actual en curso.
+ Si la instrucción **ya se completó** antes de que se realizara la solicitud de sondeo prolongado, la API devuelve inmediatamente el estado terminal.
+ Si `WaitTimeSeconds` se **omite**, se conserva el comportamiento asíncrono predeterminado.

## Casos de uso comunes
<a name="data-api-long-polling-which-api"></a>

A continuación, se muestran ejemplos de casos en los que el sondeo largo puede ser útil:
+ **Envíe una consulta breve y espere a que se complete**: use `ExecuteStatement` con `WaitTimeSeconds`. Cuando la consulta finaliza o el tiempo de espera expira, la respuesta devuelve la instrucción `Status`, `RedshiftPid` y `HasResultSet`. Para obtener los metadatos completos de la instrucción, llame a `DescribeStatement`. Si `HasResultSet` es `true`, llame a `GetStatementResult` para obtener los resultados.
+ **Sondeo largo para determinar el estado**: use `ExecuteStatement` para enviar la consulta y, a continuación, llame a `DescribeStatement` con `WaitTimeSeconds`. Cuando la consulta finaliza, `DescribeStatement` devuelve los metadatos completos de la instrucción, incluidos el estado, la duración y los detalles del error.
+ **Sondeo largo para determinar el resultado**: use `ExecuteStatement` para enviar la consulta y, a continuación, llame a `GetStatementResult` con `WaitTimeSeconds`. Cuando finaliza la consulta, los datos de los resultados se devuelven directamente. Si la consulta sigue ejecutándose cuando vence el tiempo de espera, se devuelve `ResourceNotFoundException`, lo que indica que aún no hay resultados disponibles.
+ **Envíe varias consultas y espere a que se complete todo el lote**: use `BatchExecuteStatement` con `WaitTimeSeconds`. La llamada permanece abierta hasta que se completen todas las subinstrucciones y devuelve el ID principal del lote y su estado general.
+ **Envíe varias consultas y sondee el estado de una subinstrucción mediante sondeo largo**: utilice `DescribeStatement` o `GetStatementResult` con el ID de la subinstrucción y `WaitTimeSeconds`. Se devuelve tan pronto como finaliza la subinstrucción, sin esperar al resto del lote.