Dépassement de délai et problèmes réseau

Dernière mise à jour: il y a 3 mois

Les problèmes de réseau peuvent entraîner l’échec des requêtes à l’API. Voici comment gérer les dépassements de délai et les problèmes de connexion avec élégance.

Définir des délais appropriés

Définissez toujours des délais pour éviter que les requêtes restent en attente :

// JavaScript avec fetch
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 30000); // 30s
try {
  const response = await fetch('https://api.cathopic.com/resources', {
    method: 'POST',
    headers: {
      'x-api-key': apiKey,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ query: 'Jesus' }),
    signal: controller.signal
  });
  
  clearTimeout(timeout);
  return await response.json();
  
} catch (error) {
  clearTimeout(timeout);
  
  if (error.name === 'AbortError') {
    console.error('Requête dépassée après 30s');
  } else {
    console.error('Erreur réseau :', error);
  }
  throw error;
}
// Python avec requests
import requests
from requests.exceptions import Timeout, RequestException
try:
    response = requests.post(
        'https://api.cathopic.com/resources',
        headers={'x-api-key': api_key},
        json={'query': 'Jesus'},
        timeout=30  # 30 secondes
    )
    return response.json()
    
except Timeout:
    print('Requête dépassée après 30s')
    raise
except RequestException as e:
    print(f'Erreur réseau : {e}')
    raise

Erreurs réseau courantes

Délai de connexion :

  • Impossible d’établir une connexion au serveur

  • En général, problème réseau ou de pare-feu

  • Vérifiez la connexion Internet

  • Vérifiez que le pare-feu autorise le HTTPS vers api.cathopic.com

Délai de lecture :

  • Connexion établie, mais aucune réponse

  • Le serveur peut être lent ou surchargé

  • Augmentez le délai ou réessayez plus tard

Échec de résolution DNS :

  • Impossible de résoudre api.cathopic.com

  • Problème du serveur DNS

  • Réessayez ou vérifiez les paramètres DNS

Réessayer avec un backoff

async function fetchWithRetry(url, options, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    try {
      const controller = new AbortController();
      const timeout = setTimeout(() => controller.abort(), 30000);
      
      const response = await fetch(url, {
        ...options,
        signal: controller.signal
      });
      
      clearTimeout(timeout);
      
      if (!response.ok) {
        throw new Error(`HTTP ${response.status}`);
      }
      
      return await response.json();
      
    } catch (error) {
      const isLastAttempt = attempt === maxRetries - 1;
      
      if (isLastAttempt) {
        console.error(`Tous les ${maxRetries} essais ont échoué`);
        throw error;
      }
      
      const waitTime = Math.pow(2, attempt) * 1000;
      console.log(`L’essai ${attempt + 1} a échoué. Nouvelle tentative dans ${waitTime}ms...`);
      
      await new Promise(resolve => setTimeout(resolve, waitTime));
    }
  }
}

Valeurs de délai recommandées

  • Délai de connexion : 10 secondes

  • Délai de lecture : 30 secondes

  • Recherche /resources : 30 secondes

  • /confirm licensing : 30 secondes

Déboguer les problèmes réseau

Utilisez curl pour tester la connectivité :

# Tester la connectivité de base
curl -v https://api.cathopic.com/resources
# Tester avec un délai
curl --max-time 30 -X POST https://api.cathopic.com/resources \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "test"}'

Vérifiez :

  • ✓ api.cathopic.com se résout en DNS

  • ✓ La connexion SSL/TLS réussit

  • ✓ Une réponse HTTP est reçue

  • ✓ Le temps de réponse est raisonnable (<5s en général)

Si les problèmes persistent, contactez support avec des détails de diagnostic réseau.

Cet article vous a-t-il été utile ?