Aurabase-Logo
AurabasisDokumente
Dokumente›Edge Functions›Errors, timeouts and retries

Fehler, Zeitüberschreitungen und Wiederholungsversuche

So lesen Sie, was invoke zurückgibt, wenn etwas schief geht und Sie sicher erneut anrufen können.

9 Min. gelesen·Ebene Mittelstufe·Überarbeitet am 12.10.2026
Dieser englische Text wurde automatisch aus dem französischen Original generiert und wurde noch nicht überprüft.
Diese Seite wurde automatisch übersetzt. Maßgeblich ist die englische Version.
#
Anatomie

1. Das Fehlerobjekt

invoke gibt { data, error } zurück und löst nie aus. error ist ein AuraError, also ist isAuraError(error) wahr. Zwei Unterklassen sagen Ihnen , wer versagt hat:

classify.tstypescript
import { FunctionsHttpError, FunctionsRelayError } from '@aurabase/aurabase-js'

const { data, error } = await aura.functions.invoke('checkout', { body })

if (error instanceof FunctionsHttpError) {
  // Ihre Funktion hat mit einem Fehlerstatus geantwortet. Debuggen Sie Ihren Code.
} else if (error instanceof FunctionsRelayError) {
  // Die Plattform ist ausgefallen: Die Antwort Ihrer Funktion kam nie zurück.
} else if (error) {
  // Der Anruf wurde auf dem Client abgebrochen oder abgelehnt (Timeout, invalid_body, no_session).
}
FeldBedeutung
error.statusHTTP-Status. 0 bedeutet, dass der Fehler auf dem Client aufgetreten ist (keine Antwort).
error.codeStabiler Bezeichner, zum Beispiel NOT_FOUND, QUOTA_EXCEEDED, timeout, invalid_body.
error.messageDer von Ihrer Funktion zurückgegebene Text oder die Erklärung der Plattform.
error.contextAuf einem FunctionsHttpError: der von Ihrer Funktion zurückgegebene Text (geparstes JSON oder Text).
error.detailsDer Rohfehlertext. Für einen Plattformfehler enthält es error.request_id.
#
Diagnose

2. Um welchen Fehler handelt es sich?

Beobachtete Verhaltensweisen gegenüber einem laufenden Stapel. Die Kontingentzeile folgt der Fehlerzuordnung des Backends und wurde in unseren Tests nicht ausgelöst.

Was ist passiert?Klassestatuscodemessage
Die Funktion existiert nichtFunctionsHttpError404NOT_FOUND„…Funktion ‚nein‘ unlösbar“
Ihre Funktion gibt 500 mit Text zurückFunctionsHttpError500http_500dieser Text
Ihre Funktion gibt 503 selbst zurückFunctionsHttpError503http_503was du zurückgegeben hast
Ihre Funktion wirftFunctionsHttpError500http_500„Interner Serverfehler“
Ihre Funktion überschreitet ihre timeout_secsFunctionsHttpError500 oder 503http_500 / http_503„Funktionsausführung fehlgeschlagen“ oder „Funktion hat HTTP 503 zurückgegeben“
Die Laufzeit ist nicht erreichbarFunctionsRelayError503SERVICE_UNAVAILABLEerklärt, dass die Funktion nicht ausgeführt wurde
Das Netzwerk schlägt fehl, bevor eine Antwort erfolgtFunctionsRelayError0network_errorder Netzwerkfehler
Plankontingent ausgeschöpftFunctionsHttpError403QUOTA_EXCEEDEDdie Quotenmeldung
Zu viele Anrufe von einem KundenFunctionsHttpError429rate_limit_exceededwarte Nachricht
Anfragetext zu großFunctionsRelayError503SERVICE_UNAVAILABLE„Maximale Nutzlastgröße überschritten“
Sie haben abgebrochen oder Ihr timeout ist abgelaufenAuraError0timeout„Funktionsaufruf abgebrochen oder Zeitüberschreitung“
Der Text kann nicht als JSON gesendet werdenAuraError0invalid_bodybenennt den zu vermeidenden Typ
Ein 503 Ihrer Funktion ist kein Plattformfehler

Wenn Ihr eigener Code 502, 503 oder 504 zurückgibt, erhalten Sie ein FunctionsHttpError: Die Klasse sagt Ihnen, wer geantwortet hat, nicht die Statusnummer.

Zwei Misserfolge sehen nach etwas anderem aus

Ein Anfragetext mit mehr als etwa 256 KiB wird mit 503 SERVICE_UNAVAILABLE abgelehnt und eine -Antwort von etwa 300 KB oder mehr wurde innerhalb unseres 50-Sekunden-Tests nicht zurückgegeben. Siehe -Grenzwerte. Ein erneuter Versuch hilft nicht; Senden Sie weniger Daten oder verwenden Sie Speicher.

#
Versuchen Sie es noch einmal

3. Entscheiden Sie, ob Sie es erneut versuchen möchten

Das SDK wiederholt niemals einen Aufruf für Sie: Ihre Funktion kann Nebenwirkungen haben und ein wiederholtes POST ist standardmäßig nicht sicher. Sie entscheiden anhand der folgenden Tabelle.

MisserfolgWurde die Funktion ausgeführt?Sicherer erneuter Versuch?
503 von der Plattform (FunctionsRelayError)Nein, die Laufzeit war nicht erreichbarJa, mit einer kurzen Pause
429NeinJa, nach der Verzögerung in error.retryAfter
403 QUOTA_EXCEEDEDNeinNein, bis das Kontingent zurückgesetzt wird oder Sie den Plan ändern
status 0 (network_error)UnbekanntNur wenn Ihre Funktion idempotent ist
timeout auf dem ClientUnbekanntNur wenn Ihre Funktion idempotent ist
FunctionsHttpError 5xxJa, teilweise oder vollständigNur wenn Ihre Funktion idempotent ist
FunctionsHttpError 4xxJaNein: Korrigieren Sie die Anfrage
retry.tstypescript
import { FunctionsRelayError } from '@aurabase/aurabase-js'

async function invokeWithRetry(name: string, body: unknown, attempts = 3) {
  for (let i = 0; i < attempts; i++) {
    const res = await aura.functions.invoke(name, { body })
    const safe = res.error instanceof FunctionsRelayError && res.error.status === 503
    if (!res.error || !safe) return res
    await new Promise((r) => setTimeout(r, 2 ** i * 500))
  }
  return aura.functions.invoke(name, { body })
}
Machen Sie die Funktion stattdessen idempotent

Die Plattform dedupliziert keine Aufrufe und ignoriert Idempotency-Key. Speichern Sie für Zahlungen oder E-Mails einen Schlüssel, den Sie in body übergeben, und überprüfen Sie ihn beim Start der Funktion.

#
Zeit

4. Auszeiten

Drei Uhren laufen gleichzeitig:

UhrStandardWo kann man es ändern?
Ihr Kunde30 s für jedes responseTypeinvoke(…, { timeout }), { signal } oder requestTimeoutMs in den Clientoptionen
Die Funktion30 s, zwischen 1 und 300permissions.timeout_secs für die Funktion
Das Tor380 snicht durch Projekte konfigurierbar

Wenn die Funktion timeout_secs überschreitet, wird sie von der Laufzeit abgebrochen und Ihr Aufruf schlägt nach etwa dieser Verzögerung fehl, mit den oben gezeigten 500 oder 503. Die Ursache erscheint in error.context.detail (WorkerRequestCancelled: request has been cancelled by supervisor) im Rohmodus. Stellen Sie Ihren Client timeout etwas über dem timeout_secs der Funktion ein, um diesen Fehler anstelle eines Clients timeout anzuzeigen.

timeout.tstypescript
const { error } = await aura.functions.invoke('report', { timeout: 35_000 })
if (error?.code === 'timeout') {
  // Von Ihrem Kunden storniert. Möglicherweise läuft die Funktion noch.
}

Für Arbeiten, die länger als ein paar Sekunden dauern, einen Job in die Warteschlange einreihen, anstatt eine Verbindung offen zu halten.

#
Debuggen

5. Finden Sie die Ursache

  • Plattformfehler tragen eine Anforderungs-ID: error.details.error.request_id. Geben Sie es an, wenn Sie den Support kontaktieren.
  • aura functions logs <name> listet aktuelle HTTP-Anfragen mit Methode, Pfad, Status, Dauer und Anfrage-ID auf. Es zeigt nicht an, was Ihre Funktion mit console.log oder console.error geschrieben hat: Diese Ausgabe bleibt in den eigenen Protokollen der Laufzeit, die nur der Plattformbetreiber lesen kann. Siehe -Grenzwerte für diese und die anderen aktuellen Lücken.
  • Die Kennung des Aufrufs wird nicht an Ihre Funktion weitergeleitet. Übergeben Sie Ihre eigene ID in headers und protokollieren Sie sie.
Zuletzt aktualisiert · 12.10.2026