Aller au contenu
Sandbox

Délais d'attente

Ce qui se passe quand une requête dure : les bornes que le serveur s'impose, ce que vous recevez quand elles sont atteintes, et comment reprendre après un délai dépassé côté client.

Voir en Markdown

Noryo ne publie aucun engagement de latence. Aucune valeur n'est promise tant qu'elle n'a pas été mesurée sur du trafic réel. Choisissez vos délais côté client en fonction de vos propres contraintes, et prévoyez qu'une requête puisse expirer de votre côté.

Les bornes côté serveur

Le serveur ne laisse aucune étape attendre indéfiniment. Chaque borne atteinte produit une réponse précise, et aucune ne facture :

ÉtapeSi elle dépasse sa borneFacturé ?Mémorisé ?
Moteur de résolution503 engine_errornonnon
Attente d'une requête identique en cours (même Idempotency-Key)503 busy, avec Retry-Afternonnon
Contention au moment du règlement503 busy, avec Retry-Afternonnon
Règlement500 internal_errorvoir ci-dessousvoir ci-dessous

Les valeurs de ces bornes sont des réglages internes, ajustables sans changer le contrat : elles ne sont pas publiées et ne doivent pas servir à dimensionner vos délais.

Le cas du 500

Un 500 signifie que Noryo n'a pas pu confirmer l'issue de la tentative. Le règlement étant atomique (clé d'idempotence, facturation et réponse écrites ensemble), deux cas seulement sont possibles :

  • la tentative n'a pas été réglée : rien n'existe, et une reprise la traite comme une première requête ;
  • la tentative a été réglée : sa réponse est mémorisée, et une reprise avec la même Idempotency-Key la rend, avec Noryo-Idempotency-Replayed: true.

Dans les deux cas, reprendre avec la même clé donne la bonne réponse et ne facture qu'une fois.

Après un délai dépassé côté client

Si votre client abandonne une requête avant la réponse, vous ne savez pas si elle a été réglée. Ne devinez pas : reprenez.

Ce que la requête portaitRepriseRésultat
Idempotency-KeyMême clé, même corpsRéponse mémorisée si la première a abouti, sinon traitement normal. Si la première est encore en cours, la reprise l'attend, ou rend 503 busy.
external_transaction_id seulMême corpsSi la première a abouti : son résultat, deduplicated: true, non facturé. Sinon : traitement normal.
Les deuxMême clé, même corpsLes deux protections s'appliquent.

Une création sans aucun des deux identifiants est refusée d'emblée (400 identifier_required) : il n'existe pas de cas où une reprise après un délai dépassé puisse facturer deux fois.

Choisir un délai côté client

  • Fixez un délai par requête et un nombre maximal de tentatives, plutôt qu'un délai global infini.
  • Gardez la même Idempotency-Key pour toutes les tentatives d'une opération.
  • Mesurez vos propres latences et journalisez le Noryo-Request-Id de chaque tentative : en cas de lenteur anormale, c'est ce qui permet au support de retrouver la tentative exacte.

Une boucle complète est donnée dans Reprises.

Publié le 2026-10-08 21:04 UTC (version 1).

Cette page vous a-t-elle aidé ?