Időtúllépés és hálózati problémák

Utolsó frissítés: 3 hónappal ezelőtt

A hálózati problémák miatt az API-kérések sikertelenek lehetnek. Így kezeld az időtúllépéseket és a kapcsolódási gondokat kulturáltan.

Megfelelő időtúllépések beállítása

Mindig állíts be időtúllépést, hogy elkerüld a „beragadó” kéréseket:

// JavaScript a fetch-sel
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('A kérés 30s után időtúllépett');
  } else {
    console.error('Hálózati hiba:', error);
  }
  throw error;
}
// Python a requests-szel
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 másodperc
    )
    return response.json()
    
except Timeout:
    print('A kérés 30s után időtúllépett')
    raise
except RequestException as e:
    print(f'Hálózati hiba: {e}')
    raise

Gyakori hálózati hibák

Kapcsolódási időtúllépés:

  • Nem sikerül kapcsolatot létesíteni a szerverrel

  • Leggyakrabban hálózati vagy tűzfal-probléma

  • Ellenőrizd az internetkapcsolatot

  • Ellenőrizd, hogy a tűzfal engedi-e a HTTPS-t a következőhöz: api.cathopic.com

Olvasási időtúllépés:

  • A kapcsolat létrejött, de nincs válasz

  • A szerver lehet lassú vagy túlterhelt

  • Növeld az időtúllépést, vagy próbáld újra később

DNS-feloldási hiba:

  • Nem sikerül feloldani az api.cathopic.com címet

  • DNS-kiszolgáló probléma

  • Próbáld újra, vagy ellenőrizd a DNS-beállításokat

Újrapróbálkozás fokozatos várakozással (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(`Az összes ${maxRetries} próbálkozás sikertelen volt`);
        throw error;
      }
      
      const waitTime = Math.pow(2, attempt) * 1000;
      console.log(`A(z) ${attempt + 1}. próbálkozás sikertelen. Újrapróbálás ${waitTime} ms múlva...`);
      
      await new Promise(resolve => setTimeout(resolve, waitTime));
    }
  }
}

Ajánlott időtúllépési értékek

  • Kapcsolódási időtúllépés: 10 másodperc

  • Olvasási időtúllépés: 30 másodperc

  • /resources keresés: 30 másodperc

  • /confirm licensing: 30 másodperc

Hálózati problémák hibakeresése

A kapcsolat teszteléséhez használd a curl-t:

# Alap kapcsolat tesztelése
curl -v https://api.cathopic.com/resources
# Teszt időtúllépéssel
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"}'

Ellenőrizd:

  • ✓ Az api.cathopic.com feloldása (DNS)

  • ✓ Az SSL/TLS kapcsolat sikeres

  • ✓ HTTP válasz érkezik

  • ✓ A válaszidő ésszerű (<5s általában)

Ha a problémák továbbra is fennállnak, vedd fel a kapcsolatot a támogatással a hálózati diagnosztikai részletekkel.

Hasznos volt ez a cikk?