Siirry dokumentaation sisältöön

Python SDK

Synkroninen ja asynkroninen asiakas samalla resurssimallilla.

Tässä oppaassa
  1. 1Valitse sync tai async
  2. 2Käytä asiakasta uudelleen
  3. 3Käsittele rakenteiset virheet
  4. 4Varmenna raaka webhook-runko
Tässä oppaassa
  1. 1Valitse sync tai async
  2. 2Käytä asiakasta uudelleen
  3. 3Käsittele rakenteiset virheet
  4. 4Varmenna raaka webhook-runko

Pakettisopimus

Generoitu lähdekoodijakelu on nordic-devhouse ja import-paketti nordic_devhouse. Generoitu siirtokerros käyttää httpx-kirjastoa ja tähtää tyypitettyyn Python-asiakkaaseen.

Käytä synkronista asiakasta

Käytä NordicDevhouse-asiakasta skripteissä, workereissa ja synkronisissa web-sovelluskehyksissä. Context manager sulkee yhteyspoolin varmasti. Asiakkaan voi myös sulkea erikseen, jos sen elinkaarta hallitaan riippuvuussäiliössä.

Python
import os
from nordic_devhouse import NordicDevhouse

with NordicDevhouse(
    api_key=os.environ["NORDIC_DEVHOUSE_API_KEY"],
    timeout=30.0,
    max_retries=3,
) as ndh:
    result = ndh.scrape.run(
        url="https://example.com/products",
        formats=["json"],
        idempotency_key="catalog-2026-08-11",
    )
    print(result.job_id, result.records, result.data)

Käytä asynkronista asiakasta

Käytä AsyncNordicDevhouse-asiakasta olemassa olevassa tapahtumasilmukassa. Sillä on samat resurssi- ja metodinimet kuin synkronisella asiakkaalla; vain verkkometodeja odotetaan awaitilla. Älä kutsu synkronista asiakasta asynkronisesta pyyntökäsittelijästä.

Python
import os
from nordic_devhouse import AsyncNordicDevhouse

async with AsyncNordicDevhouse(
    api_key=os.environ["NORDIC_DEVHOUSE_API_KEY"]
) as ndh:
    job = await ndh.scrape.start(
        url="https://example.com/products",
        formats=["json"],
    )
    result = await ndh.jobs.wait(job.id, timeout=600.0)

Mallit ja paluuarvot

Julkiset vastaukset ovat muuttumattomia, tyypitettyjä datamalleja, joissa on snake_case-attribuutit sekä from_dict/to_dict-apurit. Tuntemattomat palvelinkentät säilyvät model.extra-kentässä, jotta API:n sivuversiolisäys ei hävitä dataa.

MalliKeskeiset attribuutit
Jobid, status, created_at, completed_at, progress, warnings
JobResult[T]job_id, records, data, metadata, request_id
DatasetExportid, status, format, download_url, expires_at
WebhookEvent[T]id, type, created_at, data
RequestOptionstimeout, max_retries, idempotency_key

Käsittele rakenteiset virheet

Kaikki paketin virheet perivät NordicDevhouseError-tyypin. Rakenteiset attribuutit voi lokittaa turvallisesti, mutta merkkijonoesitykset peittävät tunnisteet ja allekirjoitetut sisällöt. Uudelleen yritettävät virheet sisältävät retry_after-arvon, kun palvelin antaa sen.

Python
from nordic_devhouse import (
    NordicDevhouseError,
    RateLimitError,
    ValidationError,
)

try:
    result = ndh.scrape.run(url=url, formats=["json"])
except RateLimitError as error:
    logger.warning("rate limited", extra={
        "retry_after": error.retry_after,
        "request_id": error.request_id,
    })
except ValidationError as error:
    logger.error("invalid request", extra={"issues": error.issues})
except NordicDevhouseError as error:
    logger.exception("SDK request failed", extra={
        "code": error.code,
        "request_id": error.request_id,
    })

Varmenna raaka webhook-runko

Anna metodille täsmälleen vastaanotetut tavut ennen JSON-jäsennystä. Varmennus tarkistaa HMAC-SHA256-allekirjoituksen ja aikaleiman sallitun eron ja palauttaa sen jälkeen tyypitetyn tapahtuman. Sovelluskehysadapteri voi poimia raa’an rungon, mutta kryptografinen varmennus pysyy SDK-moduulissa. Tallenna varmennettu tapahtumatunniste kaksoiskäsittelyn estämiseksi.

Python
event = ndh.webhooks.verify(
    payload=request.body,
    signature=request.headers["Nordic-Signature"],
    secret=os.environ["NORDIC_WEBHOOK_SECRET"],
)

if event.type == "scrape.completed":
    import_result(event.data.job_id)

Elinkaaren ja rinnakkaisuuden säännöt

  1. 1
    Käytä yhtä asiakasta uudelleen prosessin tai workerin elinkaaren ajan
  2. 2
    Synkroninen asiakas tukee tavallista worker-rinnakkaisuutta; asynkroninen asiakas kuuluu tapahtumasilmukalleen
  3. 3
    Context manager on ensisijainen resurssien vapautuksen rajapinta
  4. 4
    Peruutus lopettaa pollauksen, mutta ei peru palvelimella ajettavaa keräystyötä
  5. 5
    Mukautettu HTTP-siirto tarjotaan vain testisaumana, ei toisena julkisena verkkorajapintana
Oliko tästä sivusta apua?