Sobes.tech
Junior — Middle

Kaip galima greitai atkurti užklausos vykdymą jos gedimo ar vėlavimo atveju?

sobes.tech AI

Atsakymas iš AI

Greitai atnaujinti užklausos vykdymą Python, jei įvyksta klaida ar vėlavimas, galima naudoti keletą požiūrių:

  1. Pakartojimai (Retry)

    • Apvyniokite iškvietimą ciklu su ribotu bandymų skaičiumi.
    • Naudokite bibliotekas kaip retrying arba tenacity, kurios leidžia lankstiai konfigūruoti pakartojimus su vėlavimais.
  2. Laiko limitai (Timeouts)

    • Nustatykite laiko limitus tinklo užklausoms (pavyzdžiui, requests per timeout parametrą), kad nesulėtumėte amžinai.
  3. Asinchroninis vykdymas

    • Naudokite asyncio užklausų vykdymui, leidžiantį atšaukti arba pereiti prie kitų užduočių.
  4. Išimčių tvarkymas

    • Gaudykite su tinklu susijusias klaidas ar laiko limitų išimtis ir bandykite dar kartą.

Pavyzdys naudojant tenacity biblioteką:

from tenacity import retry, stop_after_attempt, wait_fixed
import requests

@retry(stop=stop_after_attempt(3), wait=wait_fixed(2))
def fetch_url(url):
    response = requests.get(url, timeout=5)
    response.raise_for_status()
    return response.text

try:
    data = fetch_url('https://example.com')
except Exception as e:
    print(f"Nepavyko gauti duomenų: {e}")

Šis kodas bandys atlikti užklausą iki 3 kartų su 2 sekundžių pertrauka tarp bandymų.