View a markdown version of this page

Réduisez les appels d'API grâce à de longues interrogations - Amazon Redshift

Amazon Redshift ne prendra plus en charge l'utilisation des UDF Python après le 30 juin 2026. Nous allons commencer à l'appliquer par étapes. Pour plus d'informations sur les détails de la fin de vie de Python et des options de migration, consultez le billet de blog publié le 30 juin 2025.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Réduisez les appels d'API grâce à de longues interrogations

Par défaut, les opérations de l'API Data renvoient une réponse immédiate. Si l'opération concerne une instruction en cours, vous devez effectuer plusieurs sondages jusqu'à ce que l'instruction atteigne un état terminal. En cas d'interrogation longue, définissez WaitTimeSeconds une valeur comprise entre 1 et 30. L'API retardera le renvoi d'une réponse synchrone jusqu'à ce que l'instruction se termine ou WaitTimeSeconds soit atteinte, selon la première éventualité.

Les sondages longs sont pris en charge sur DescribeStatement ExecuteStatement BatchExecuteStatement, GetStatementResult, et GetStatementResultV2.

Lorsqu'une opération a WaitTimeSeconds pour but de soumettre une nouvelle déclaration ou d'attendre une déclaration existante :

  • Si l'instruction se termine dans le délai d'attente, la réponse inclut l'état du terminal ou les données de résultat, en fonction de l'opération.

  • Si l'instruction est toujours en cours à l'expiration du temps d'attente, la réponse renvoie l'état en cours.

  • Si la déclaration était déjà terminée avant que la demande de sondage longue ne soit faite, l'API renvoie immédiatement l'état du terminal.

  • S'il WaitTimeSeconds n'est pas défini, le comportement asynchrone par défaut est conservé.

Cas d’utilisation courants

Voici des exemples de situations dans lesquelles un long sondage peut être utile :

  • Soumettez une courte requête et attendez qu'elle soit terminée — À utiliser ExecuteStatement avecWaitTimeSeconds. Lorsque la requête se termine ou que le temps d'attente expire, la réponse renvoie l'instruction StatusRedshiftPid, etHasResultSet. Pour obtenir les métadonnées complètes du relevé, appelezDescribeStatement. Si HasResultSet c'est true le cas, appelez GetStatementResult pour récupérer les résultats.

  • Sondage long pour connaître le statut  : utilisez cette option ExecuteStatement pour soumettre la requête, puis appelez DescribeStatement avecWaitTimeSeconds. Lorsque la requête est terminée, DescribeStatement renvoie les métadonnées complètes de l'instruction, y compris le statut, la durée et les détails de l'erreur.

  • Sondage long pour le résultat  : utilisez ExecuteStatement cette option pour soumettre la requête, puis appelez GetStatementResult avecWaitTimeSeconds. Lorsque la requête est terminée, les données de résultat sont renvoyées directement. Si la requête est toujours en cours à l'expiration du temps d'attente, une valeur ResourceNotFoundException est renvoyée indiquant qu'aucun résultat n'est encore disponible.

  • Soumettez plusieurs requêtes et attendez que l'ensemble du lot soit terminé — À utiliser BatchExecuteStatement avecWaitTimeSeconds. L'appel reste ouvert jusqu'à ce que toutes les sous-instructions soient terminées et renvoie l'ID du parent du lot et l'état général.

  • Soumettez plusieurs requêtes et un statut de sondage long pour une sous-déclaration — Utilisez DescribeStatement ou GetStatementResult avec l'ID de sous-déclaration et. WaitTimeSeconds Renvoie dès que cette sous-instruction est terminée, sans attendre le reste du lot.