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
Reducción de las llamadas a la API con el sondeo largo
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, ExecuteStatement, BatchExecuteStatement, GetStatementResult y GetStatementResultV2.
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
WaitTimeSecondsse omite, se conserva el comportamiento asíncrono predeterminado.
Casos de uso comunes
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
ExecuteStatementconWaitTimeSeconds. Cuando la consulta finaliza o el tiempo de espera expira, la respuesta devuelve la instrucciónStatus,RedshiftPidyHasResultSet. Para obtener los metadatos completos de la instrucción, llame aDescribeStatement. SiHasResultSetestrue, llame aGetStatementResultpara obtener los resultados. -
Sondeo largo para determinar el estado: use
ExecuteStatementpara enviar la consulta y, a continuación, llame aDescribeStatementconWaitTimeSeconds. Cuando la consulta finaliza,DescribeStatementdevuelve 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
ExecuteStatementpara enviar la consulta y, a continuación, llame aGetStatementResultconWaitTimeSeconds. 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 devuelveResourceNotFoundException, lo que indica que aún no hay resultados disponibles. -
Envíe varias consultas y espere a que se complete todo el lote: use
BatchExecuteStatementconWaitTimeSeconds. 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
DescribeStatementoGetStatementResultcon el ID de la subinstrucción yWaitTimeSeconds. Se devuelve tan pronto como finaliza la subinstrucción, sin esperar al resto del lote.