SSB Collector Client: Administrer datainnsamlingsoppgaver

Dapla
Python
Data Collection
Forfatter

Dapla Team

Opprettet

December 4, 2025

Innledning

I dette blogginnlegget presenterer vi ssb-collector-client, en Python-pakke som forenkler administrasjon av datainnsamlingsoppgaver (data collector tasks) i Dapla-plattformen. I dette blogginnlegget presenterer vi endringen der Collector-klientfunksjonaliteten er flyttet ut fra dapla-toolbelt og inn i en egen Python-pakke kalt ssb-collector-client. Hensikten er å gjøre det mulig å installere og bruke datainnsamlingsfunksjonalitet isolert, uten å måtte laste inn hele verktøykassen i dapla-toolbelt. Pakken gir et objektorientert grensesnitt for å starte, overvåke og stoppe innsamlingsoppgaver.

Hva er SSB Collector Client?

ssb-collector-client er en klientbibliotek som gir enkel tilgang til Data Collector-tjenesten i Dapla. Den håndterer autentisering automatisk via dapla-auth-client og tilbyr en intuitiv API for å jobbe med innsamlingsoppgaver.

Hovedfunksjoner

  • Start nye innsamlingsoppgaver med tilpassede spesifikasjoner
  • List alle kjørende oppgaver for å overvåke fremdrift
  • Stopp kjørende oppgaver ved behov
  • Innebygd autentisering via Dapla Auth Client
  • Objektorientert API med CollectorClient-klassen

Installasjon

Du kan installere ssb-collector-client via pip fra PyPI:

pip install ssb-collector-client

Eller med Poetry:

poetry add ssb-collector-client

Krav

For å bruke ssb-collector-client trenger du:

  • Python 3.10 eller høyere
  • Tilgang til en Data Collector-tjeneste
  • Dapla-autentisering (håndteres automatisk)

Grunnleggende bruk

Hurtigstart

Her er et enkelt eksempel på hvordan du kommer i gang:

from ssb_collector_client import CollectorClient

# Initialiser klienten med URL-en til collector-tjenesten
client = CollectorClient("https://your-collector-service.no/tasks")

# Definer spesifikasjonen for innsamlingsoppgaven
specification = None

# Load specification from file
with open("<specification_file>.json") as specification_file:
    specification = json.load(specification_file)

# Start en ny oppgave
response = client.start(specification)
print(f"Task started: {response.status_code}")

# Hent alle kjørende oppgaver
tasks = client.running_tasks()
print(f"Running tasks: {tasks.json()}")

# Stopp en spesifikk oppgave ved ID
client.stop(task_id=1234)

Komplett eksempel

Her er et mer detaljert eksempel som viser hele arbeidsflyten:

from ssb_collector_client import CollectorClient

# Initialiser klienten
collector_url = "https://your-collector-service.no/tasks"
client = CollectorClient(collector_url)

# Definer spesifikasjonen for innsamlingen
specification = None

# Load specification from file
with open("<specification_file>.json") as specification_file:
    specification = json.load(specification_file)

# Start en ny innsamlingsoppgave
print("Starter innsamlingsoppgave...")
start_response = client.start(specification)

if start_response.status_code == 200:
    print("✓ Oppgaven ble startet vellykket")
else:
    print(f"✗ Feil ved start: {start_response.status_code}")

# Sjekk kjørende oppgaver
print("\nHenter kjørende oppgaver...")
tasks_response = client.running_tasks()
tasks = tasks_response.json()

for task in tasks:
    print(f"- Task ID: {task['id']}, Status: {task['status']}")

# Stopp en oppgave om nødvendig
if tasks:
    task_id = tasks[0]['id']  # Bruk faktisk task ID
    print(f"\nStopper oppgave {task_id}...")
    stop_response = client.stop(task_id)
    
    if stop_response.status_code == 200:
        print("✓ Oppgaven ble stoppet")
    else:
        print(f"✗ Kunne ikke stoppe oppgaven: {stop_response.status_code}")

API-oversikt

CollectorClient

Hovedklassen for å interagere med Data Collector-tjenesten.

Initialisering:

client = CollectorClient(base_url)

Metoder:

  • start(specification) - Starter en ny innsamlingsoppgave med gitt spesifikasjon
  • running_tasks() - Henter alle kjørende oppgaver
  • stop(task_id) - Stopper en oppgave basert på ID

Autentisering

ssb-collector-client bruker dapla-auth-client for automatisk autentisering. Du trenger ikke å håndtere tokens manuelt - klienten tar seg av alt dette i bakgrunnen.

Nyttige bruksområder

Automatisert datainnsamling

Bruk ssb-collector-client til å automatisere periodisk datainnsamling fra eksterne kilder:

# Sett opp daglig innsamling
specification = None

# Load specification from file
with open("<specification_file>.json") as specification_file:
    specification = json.load(specification_file)

client.start(specification)

Overvåking av innsamlingsoppgaver

Hold oversikt over alle kjørende innsamlingsoppgaver:

# Sjekk status på alle oppgaver
tasks = client.running_tasks().json()

for task in tasks:
    if task['status'] == 'failed':
        print(f"Oppgave {task['id']} har feilet!")
        # Send varsling eller restart oppgaven

Ressurser

Oppsummering

ssb-collector-client gjør det enkelt å:

  • Administrere datainnsamlingsoppgaver programmatisk
  • Automatisere periodisk datainnsamling
  • Overvåke og kontrollere kjørende oppgaver
  • Integrere med Dapla-plattformen uten manuell autentisering

Prøv ssb-collector-client i ditt neste datainnsamlingsprosjekt!