---
title: "Délais d'expiration, limitation de débit et nouvelles tentatives"
description: "Configurer les délais d'expiration du SDK et les nouvelles tentatives limitées, distinguer les erreurs réessayables des erreurs de configuration, et éviter les soumissions en double."
headingIds: {"Dans quels cas réessayer":"section-1","Utilisez d’abord les nouvelles tentatives intégrées du SDK":"section-2","Lorsque vous implémentez vos propres nouvelles tentatives":"section-3","Enregistrez suffisamment d’informations de débogage":"section-4"}
---

<aside className="docs-publication" data-pagefind-ignore>

Documentation maintenue par [1ZheAI](https://1zheai.com/en/editorial/#publisher). [Sources et corrections](https://1zheai.com/en/editorial/).

Vous avez trouvé une erreur ? [Contactez l'assistance](mailto:support@1zheai.com) en indiquant l'adresse de la page et une description. N'envoyez pas de clés API ni d'identifiants de compte.

</aside>
Corrigez d'abord les erreurs de configuration, puis traitez les pannes temporaires. Limitez le nombre de tentatives, la concurrence et le temps d'attente total ensemble pour éviter de renvoyer la même requête échouée de nombreuses fois en peu de temps.

## Dans quels cas réessayer

| Situation | Recommandation |
| --- | --- |
| 400 / 401 / 403 / 404 | Corrigez d'abord la requête, les permissions ou le modèle ; ne répétez pas automatiquement la requête d'origine |
| 429 | Consultez l'invite de la réponse ; si `Retry-After` est présent, respectez le délai d'attente et réduisez la concurrence |
| 500 / 502 / 503 / 504 / 529 | Vous pouvez réessayer de manière limitée ; en cas d'échec persistant, arrêtez et transmettez l'ID de la requête |
| Échec de connexion | Vérifiez DNS, proxy et réseau, réessayez de manière limitée dans le délai autorisé par la tâche |
| Délai d'expiration ou interruption du flux après l'envoi de la requête | Le résultat peut être incertain ; vérifiez d'abord les journaux ; ne supposez pas que l'amont n'a pas encore traité la requête |

La portée des nouvelles tentatives de la bibliothèque client ne correspond pas nécessairement exactement au tableau ci-dessus. Utilisez la couche de réessai que vous choisissez et définissez explicitement la stratégie à cette couche.

## Utilisez d’abord les nouvelles tentatives intégrées du SDK

Les unités de délai d'expiration diffèrent entre Python et Node.js : Python utilise les secondes, Node.js utilise les millisecondes. L'exemple suivant définit un délai d'expiration de 120 secondes et jusqu'à 2 nouvelles tentatives automatiques ; lors du débogage initial, vous pouvez le mettre à 0.

<CodeGroup>
```python title="Python"
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["ONEZHE_API_KEY"],
    base_url="https://1zheai.com/v1",
    timeout=120.0,
    max_retries=2,
)
```
```javascript title="Node.js"
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.ONEZHE_API_KEY,
  baseURL: "https://1zheai.com/v1",
  timeout: 120_000,
  maxRetries: 2,
});
```
</CodeGroup>

La configuration du délai d'expiration n'est pas la limite de durée totale de l'ensemble de la tâche métier : les nouvelles tentatives et les attentes augmentent la durée totale. Si la couche supérieure réexécute la tâche, définissez un délai global et un mécanisme d'annulation séparément.

## Lorsque vous implémentez vos propres nouvelles tentatives

Désactivez les nouvelles tentatives automatiques du SDK pour éviter les superpositions. Utilisez des intervalles d'attente progressifs avec un jitter aléatoire ; limitez explicitement le nombre de tentatives, le temps d'attente maximal et la file d'attente de concurrence. Lors de l'analyse de `Retry-After`, notez qu'il peut s'agir soit de secondes, soit d'une date HTTP.

Si vous avez déjà affiché une partie des résultats en flux à l'utilisateur, ne rejouez pas automatiquement depuis le début et ne concaténez pas à l'ancien texte. Conservez l'état « incomplet » et laissez l'utilisateur décider de régénérer ou de continuer.

Pour la génération d'images, l'exécution d'outils et d'autres tâches pouvant produire des résultats externes, faites particulièrement attention aux soumissions en double. Ne supposez pas que définir un ID de requête arbitraire permettra au serveur de dédupliquer automatiquement.

## Enregistrez suffisamment d’informations de débogage

Enregistrez l'heure, le point de terminaison, le modèle, le code d'état, la durée, le numéro de tentative et l'ID de requête renvoyé par le serveur. Évitez d'enregistrer les en-têtes d'authentification et les invites privées complètes. Utilisez ces informations pour comparer avec les [journaux d'appels](/fr/docs/usage-logs/).

Pour les paramètres du SDK, consultez [OpenAI Python SDK](https://github.com/openai/openai-python#retries) et [Node SDK](https://github.com/openai/openai-node#retries). Pour les erreurs spécifiques, voir [codes d'erreur et débogage](/fr/docs/troubleshooting/).
