Zeitüberschreitungen und Netzwerkprobleme

Zuletzt aktualisiert: vor 3 Monaten

Netzwerkprobleme können dazu führen, dass API-Anfragen fehlschlagen. So gehen Sie mit Zeitüberschreitungen und Verbindungsproblemen gelassen um.

Passende Timeouts festlegen

Setzen Sie immer Timeouts, um hängende Anfragen zu vermeiden:

// JavaScript mit 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('Request timed out after 30s');
  } else {
    console.error('Network error:', error);
  }
  throw error;
}
// Python mit 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 Sekunden
    )
    return response.json()
    
except Timeout:
    print('Request timed out after 30s')
    raise
except RequestException as e:
    print(f'Network error: {e}')
    raise

Häufige Netzwerkfehler

Verbindungs-Timeout:

  • Keine Verbindung zum Server möglich

  • Meist ein Problem mit dem Netzwerk oder der Firewall

  • Internetverbindung prüfen

  • Überprüfen, ob die Firewall HTTPS für api.cathopic.com zulässt

Lese-Timeout:

  • Verbindung hergestellt, aber keine Antwort

  • Der Server ist möglicherweise langsam oder überlastet

  • Timeout erhöhen oder später erneut versuchen

Fehler bei der DNS-Auflösung:

  • api.cathopic.com kann nicht aufgelöst werden

  • Problem mit dem DNS-Server

  • Noch einmal versuchen oder DNS-Einstellungen prüfen

Erneut versuchen mit 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(`All ${maxRetries} attempts failed`);
        throw error;
      }
      
      const waitTime = Math.pow(2, attempt) * 1000;
      console.log(`Attempt ${attempt + 1} failed. Retrying in ${waitTime}ms...`);
      
      await new Promise(resolve => setTimeout(resolve, waitTime));
    }
  }
}

Empfohlene Timeout-Werte

  • Verbindungs-Timeout: 10 Sekunden

  • Lese-Timeout: 30 Sekunden

  • /resources search: 30 Sekunden

  • /confirm licensing: 30 Sekunden

Netzwerkprobleme debuggen

Verwenden Sie curl, um die Konnektivität zu testen:

# Test basic connectivity
curl -v https://api.cathopic.com/resources
# Test with timeout
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"}'

Prüfen Sie Folgendes:

  • ✓ DNS löst api.cathopic.com auf

  • ✓ SSL/TLS-Verbindung gelingt

  • ✓ HTTP-Antwort erhalten

  • ✓ Antwortzeit ist angemessen (<5s typischerweise)

Wenn die Probleme weiterhin bestehen, wenden Sie sich an support und fügen Sie Details zur Netzwerkanalyse bei.

War dieser Artikel hilfreich?