Amazon Redshift unterstützt die Verwendung von Python-UDFs nach dem 30. Juni 2026 nicht mehr. Wir werden damit beginnen, es schrittweise durchzusetzen. Weitere Informationen zum Ende der Lebensdauer von Python und zu den Migrationsoptionen finden Sie im Blogbeitrag
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Reduzieren Sie API-Aufrufe durch lange Abfragen
Standardmäßig geben Daten-API-Operationen eine sofortige Antwort zurück. Wenn der Vorgang gegen eine in Bearbeitung befindliche Anweisung erfolgt, müssen Sie wiederholt Abfragen durchführen, bis die Anweisung einen Endzustand erreicht. Stellen WaitTimeSeconds Sie bei langen Abfragen einen Wert zwischen 1 und 30 ein. Die API verzögert die Rückgabe einer synchronen Antwort, bis die Anweisung abgeschlossen WaitTimeSeconds ist oder erreicht ist, je nachdem, was früher eintritt.
Lange Abfragen werden auf DescribeStatement, ExecuteStatement BatchExecuteStatement, GetStatementResult und unterstützt. GetStatementResultV2
Wenn ein Vorgang verwendet wirdWaitTimeSeconds, um eine neue Anweisung einzureichen oder auf eine bestehende zu warten:
-
Wenn die Anweisung innerhalb der Wartezeit abgeschlossen wird, enthält die Antwort je nach Vorgang den Terminalstatus oder die Ergebnisdaten.
-
Wenn die Anweisung nach Ablauf der Wartezeit noch ausgeführt wird, gibt die Antwort den aktuellen Status „In Bearbeitung“ zurück.
-
Wenn die Anweisung bereits abgeschlossen ist, bevor die Long-Poll-Anfrage gestellt wird, kehrt die API sofort mit dem Terminalstatus zurück.
-
Wenn
WaitTimeSecondses weggelassen wird, wird das standardmäßige asynchrone Verhalten beibehalten.
Häufige Anwendungsfälle
Im Folgenden finden Sie Beispiele dafür, wann lange Abfragen sinnvoll sein können:
-
Senden Sie eine kurze Anfrage und warten Sie, bis sie abgeschlossen ist — Verwenden Sie
ExecuteStatementmitWaitTimeSeconds. Wenn die Abfrage abgeschlossen ist oder die Wartezeit abgelaufen ist, gibt die Antwort die AnweisungStatusund zurückHasResultSet.RedshiftPidRufen Sie an, um die vollständigen Metadaten der Anweisung abzurufenDescribeStatement. Falls jaHasResultSettrue, rufen SieGetStatementResultauf, um Ergebnisse abzurufen. -
Lange Statusabfrage — Wird verwendet
ExecuteStatement, um die Anfrage zu senden, und rufen Sie dannDescribeStatementmitWaitTimeSecondsan. Wenn die Abfrage abgeschlossen ist, werden die vollständigen Metadaten der Anweisung einschließlich Status, Dauer und FehlerdetailsDescribeStatementzurückgegeben. -
Lange Abfrage zum Ergebnis — Wird verwendet
ExecuteStatement, um die Abfrage zu senden, und rufen Sie dannGetStatementResultmit anWaitTimeSeconds. Wenn die Abfrage abgeschlossen ist, werden die Ergebnisdaten direkt zurückgegeben. Wenn die Abfrage nach Ablauf der Wartezeit noch läuft,ResourceNotFoundExceptionwird a zurückgegeben, was darauf hinweist, dass noch keine Ergebnisse verfügbar sind. -
Senden Sie mehrere Abfragen und warten Sie, bis der gesamte Batch abgeschlossen ist — Verwenden Sie
BatchExecuteStatementmitWaitTimeSeconds. Der Aufruf bleibt geöffnet, bis alle Unteranweisungen abgeschlossen sind, und gibt die übergeordnete Batch-ID und den Gesamtstatus zurück. -
Senden Sie mehrere Abfragen und einen langen Abfragestatus für eine Unteranweisung — Verwenden Sie
DescribeStatementoderGetStatementResultmit der Unteranweisungs-ID und.WaitTimeSecondsKehrt zurück, sobald die Unteranweisung abgeschlossen ist, ohne auf den Rest des Batches zu warten.