Skip to main content
Vous pouvez parcourir les résultats de l’API page par page à l’aide du modèle standard d’itérateur paresseux et du paramètre per_page. En outre, vous pouvez utiliser les conseils suivants sur le point de contrôle et le téléchargement en masse pour parcourir les résultats plus efficacement.

Point de contrôle des ID de run traités

Pour les projets très volumineux, enregistrez les ID que vous avez déjà traités et ignorez-les au redémarrage :
import json
import pathlib
import wandb

checkpoint_file = pathlib.Path("processed_ids.json")
processed = set(json.loads(checkpoint_file.read_text())) if checkpoint_file.exists() else set()

api = wandb.Api()
for run in api.runs("my-entity/my-project"):
    if run.id in processed:
        continue
    process(run)
    processed.add(run.id)
    checkpoint_file.write_text(json.dumps(list(processed)))
Évitez list(api.runs(...)) sur de très gros Projects, sauf si vous avez besoin d’un accès aléatoire — cela charge toutes les pages en mémoire.

Limites de débit sur les téléchargements en masse

Si chaque run déclenche des appels API supplémentaires (par exemple run.file("output.log").download()), ajoutez un court délai pour éviter les erreurs 429 :
import time

for run in api.runs("my-entity/my-project"):
    run.file("output.log").download()
    time.sleep(0.1)

Exécutions Experiments API Artifacts