Aurabase-logo
aurabasisdocumenten
documenten›Edge Functions›Errors, timeouts and retries

Fouten, time-outs en nieuwe pogingen

Hoe u kunt lezen wat invoke retourneert als er iets misgaat en wanneer u weer veilig kunt bellen.

9 min lezen·Niveau tussenproduct·Herzien op 12 okt 2026
Deze Engelse tekst is automatisch gegenereerd op basis van het Franse origineel en is nog niet beoordeeld.
Deze pagina is automatisch vertaald. De Engelse versie is gezaghebbend.
#
Anatomie

1. Het foutobject

invoke retourneert { data, error } en gooit nooit. error is een AuraError, dus isAuraError(error) is waar. Twee subklassen vertellen je wie heeft gefaald:

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

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

if (error instanceof FunctionsHttpError) {
  // Uw functie heeft geantwoord, met een foutstatus. Debug uw code.
} else if (error instanceof FunctionsRelayError) {
  // Het platform faalde: het antwoord van jouw functie kwam nooit meer terug.
} else if (error) {
  // De oproep is geannuleerd of geweigerd op de client (time-out, invalid_body, no_session).
}
VeldBetekenis
error.statusHTTP-status. 0 betekent dat de fout op de client heeft plaatsgevonden (geen reactie).
error.codeStabiele ID, bijvoorbeeld NOT_FOUND, QUOTA_EXCEEDED, timeout, invalid_body.
error.messageDe tekst die uw functie heeft geretourneerd, of de uitleg van het platform.
error.contextOp een FunctionsHttpError: de hoofdtekst die uw functie heeft geretourneerd (geparseerde JSON of tekst).
error.detailsDe onbewerkte fouttekst. Voor een platformfout bevat deze error.request_id.
#
Diagnose

2. Welke fout is het?

Gedrag waargenomen tegen een lopende stapel. De quotarij volgt de fouttoewijzing van de backend en werd niet geactiveerd in onze tests.

Wat is er gebeurdKlassestatuscodemessage
De functie bestaat nietFunctionsHttpError404NOT_FOUND"... Functie 'nee' lastig"
Uw functie retourneert 500 met tekstFunctionsHttpError500http_500die tekst
Uw functie retourneert 503 zelfFunctionsHttpError503http_503wat je terugstuurde
Je functie gooitFunctionsHttpError500http_500"Interne serverfout"
Uw functie overschrijdt zijn timeout_secsFunctionsHttpError500 of 503http_500 / http_503"Functie-uitvoering mislukt" of "Functie retourneert HTTP 503"
De looptijd is onbereikbaarFunctionsRelayError503SERVICE_UNAVAILABLElegt uit dat de functie en niet werd uitgevoerd
Het netwerk valt uit voordat er enige reactie isFunctionsRelayError0network_errorde netwerkfout
Planquota zijn opgebruiktFunctionsHttpError403QUOTA_EXCEEDEDhet quotumbericht
Te veel telefoontjes van één klantFunctionsHttpError429rate_limit_exceededwacht bericht
Verzoek lichaam te grootFunctionsRelayError503SERVICE_UNAVAILABLE"Max. laadvermogen overschreden"
Je hebt geannuleerd of je timeout is verstrekenAuraError0timeout"Functieaanroep afgebroken of time-out"
De hoofdtekst kan niet als JSON worden verzondenAuraError0invalid_bodynoemt het type dat moet worden vermeden
Een 503 van uw functie is geen platformfout

Als uw eigen code 502, 503 of 504 retourneert, krijgt u een FunctionsHttpError: de klas vertelt u wie heeft geantwoord, niet wat het statusnummer is.

Twee mislukkingen lijken op iets anders

Een verzoektekst van meer dan ongeveer 256 KiB wordt afgewezen met 503 SERVICE_UNAVAILABLE en een -antwoord van ongeveer 300 KB of meer kwam niet terug binnen onze test van 50 seconden. Zie limieten. Opnieuw proberen helpt niet; stuur minder gegevens of gebruik opslag.

#
Opnieuw proberen

3. Bepaal of u het opnieuw wilt proberen

De SDK probeert nooit opnieuw een aanroep voor u uit te voeren: uw functie kan bijwerkingen hebben en een herhaalde POST is standaard niet veilig. U beslist aan de hand van onderstaande tabel.

MislukkingIs de functie uitgevoerd?Veilig opnieuw proberen?
503 vanaf het platform (FunctionsRelayError)Nee, de runtime was onbereikbaarJa, met een korte pauze
429NeeJa, na de vertraging in error.retryAfter
403 QUOTA_EXCEEDEDNeeNee, totdat het quotum opnieuw wordt ingesteld of u van abonnement verandert
status 0 (network_error)OnbekendAlleen als uw functie idempotent is
timeout op de clientOnbekendAlleen als uw functie idempotent is
FunctionsHttpError 5xxJa, gedeeltelijk of volledigAlleen als uw functie idempotent is
FunctionsHttpError 4xxJaNee: corrigeer het verzoek
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 })
}
Maak in plaats daarvan de functie idempotent

Het platform ontdubbelt geen oproepen en negeert Idempotency-Key. Voor betalingen of e-mail slaat u een sleutel op die u doorgeeft in body en controleert u deze bij aanvang van de functie.

#
Tijd

4. Time-outs

Drie klokken lopen tegelijk:

KlokStandaardWaar u dit kunt wijzigen
Jouw klant30 s voor elke responseTypeinvoke(…, { timeout }), { signal } of requestTimeoutMs in de clientopties
De functie30 s, tussen 1 en 300permissions.timeout_secs op de functie
De poort380 sniet configureerbaar door projecten

Wanneer de functie timeout_secs overschrijdt, wordt deze door de runtime geannuleerd en mislukt uw oproep na ongeveer die vertraging, met de hierboven weergegeven 500 of 503. De oorzaak verschijnt in error.context.detail (WorkerRequestCancelled: request has been cancelled by supervisor) in onbewerkte modus. Stel uw client timeout iets boven de timeout_secs van de functie in om deze fout te zien in plaats van een client timeout.

timeout.tstypescript
const { error } = await aura.functions.invoke('report', { timeout: 35_000 })
if (error?.code === 'timeout') {
  // Geannuleerd door uw klant. Mogelijk is de functie nog actief.
}

Voor werk dat langer dan een paar seconden duurt, zet een taak in de wachtrij in plaats van een verbinding open te houden.

#
Foutopsporing

5. Zoek de oorzaak

  • Platformfouten hebben een verzoek-ID: error.details.error.request_id. Vermeld dit wanneer u contact opneemt met de ondersteuning.
  • aura functions logs <name> geeft een overzicht van recente HTTP-verzoeken met methode, pad, status, duur en verzoek-ID. Het laat en niet zien wat uw functie heeft geschreven met console.log of console.error: die uitvoer blijft in de eigen logs van de runtime, die alleen de platformoperator kan lezen. Zie limieten voor deze en de andere huidige hiaten.
  • De identificatie van de oproep wordt niet doorgestuurd naar uw functie. Geef uw eigen ID door in headers en log deze in.
Laatst bijgewerkt · 12 okt 2026