Skip to main content
Source : src/cwsandbox/_session.py:49
Gère le cycle de vie des sandboxes et permet d’exécuter des fonctions. Utilisez une session dans les cas suivants :
  • Création de plusieurs sandboxes partageant une même configuration
  • Exécution de fonctions Python dans des sandboxes
  • Nettoyage automatique des sandboxes orphelins
Les métriques sont automatiquement suivies lorsque l’appel exec() se termine sur n’importe quel sandbox associé à cette session. Utilisez log_metrics(step=N) pour consigner des métriques à des étapes d’entraînement précises.

Propriétés

sandbox_count

Nombre de sandboxes actuellement suivis par cette session.

Méthodes

log_metrics

Journalise dans wandb les métriques de sandbox accumulées. Appelez cette méthode pendant l’entraînement pour corréler l’utilisation de la sandbox avec les étapes d’entraînement. Les métriques sont automatiquement suivies lorsque exec() se termine : les utilisateurs n’ont donc besoin d’appeler log_metrics() que pour la corrélation avec les étapes. Les métriques sont également journalisées automatiquement à la fermeture de la session. Paramètres
  • step (int | None) : étape d’entraînement à associer aux métriques. Si cette valeur est fournie, les métriques sont journalisées à ce numéro de step dans wandb.
  • reset (bool) : si True (par défaut), réinitialise les métriques accumulées après une journalisation réussie. Les métriques sont conservées en cas d’échec de log() (aucun run wandb actif). Définissez cette valeur sur False pour continuer à les accumuler dans tous les cas.
Renvoie
  • bool : True si les métriques ont été journalisées, False si aucun reporter n’est configuré
  • bool : ou s’il n’y a aucun run wandb actif.
Exemples

get_metrics

Obtient les métriques actuellement cumulées. Renvoie
  • dict[str, Any] : dictionnaire contenant les noms des métriques, préfixés par cwsandbox/*, et leurs valeurs.
  • dict[str, Any] : dict vide si aucun reporter n’est configuré.

close

Arrête tous les sandboxes managés et renvoie immédiatement un OperationRef. Renvoie
  • OperationRef[None] : OperationRef[None] : utilisez .result() pour bloquer l’exécution jusqu’à l’arrêt de tous les sandboxes.
Exceptions levées
  • SandboxError : si un ou plusieurs sandboxes en cours d’exécution n’ont pas pu être arrêtés.
Exemples

sandbox

Crée une sandbox non démarrée avec les valeurs par défaut de la session. Renvoie immédiatement, sans aucun appel réseau. La sandbox démarre automatiquement lors de la première opération (exec, read_file, write_file, wait), mais vous pouvez aussi la démarrer explicitement avec start().result(). Paramètres
  • command (str | None) : commande à exécuter dans la sandbox
  • args (list[str] | None) : arguments de la commande
  • container_image (str | None) : image de conteneur à utiliser
  • tags (list[str] | None) : tags de la sandbox (fusionnés avec les valeurs par défaut de la session, y compris lorsque template_id est défini, afin que list()/adopt puissent retrouver la sandbox). Les variables d’environnement et les annotations ne sont pas fusionnées lorsqu’un modèle est utilisé (la spécification relève du modèle).
  • profile_ids : supprimé dans la version 1.x ; transmettre une valeur lève une TypeError.
  • profile_names : supprimé dans la version 1.x ; transmettre une valeur lève une TypeError.
  • runner_ids (list[str] | None) : épinglage facultatif sur un exécuteur CKS (incompatible avec le mode sans serveur et avec placement_spillover='serverless_then_cks')
  • resources (ResourceOptions | dict[str, Any] | None) : configuration des ressources. Accepte ResourceOptions pour distinguer demandes de ressources et limites, ou un dict plat pour une QoS Guaranteed rétrocompatible.
  • mounted_files (list[dict[str, Any]] | None) : fichiers à monter dans la sandbox au démarrage. Chaque dict doit contenir mount_path (str) et file_content (bytes). Remarque : les fichiers montés sont en lecture seule à l’exécution. Pour modifier un fichier, utilisez sandbox.write_file() une fois la sandbox en cours d’exécution.
  • s3_mount : supprimé dans la version 1.x ; transmettre une valeur lève une TypeError.
  • ports : supprimé dans la version 1.x ; utilisez plutôt services=[Service(...)].
  • network (NetworkOptions | dict[str, Any] | None) : NetworkOptions (ou dict) avec des flags de refus et des autorisations facultatives de noms d’hôte accordées à la création. L’exposition des ports s’effectue via services=.
  • file_system_snapshot (FileSystemSnapshotOptions | dict[str, Any] | None) : options FSS simplifiées pour un montage unique (FileSystemSnapshotOptions ou dict). Privilégiez volumes= pour les configurations à plusieurs volumes.
  • max_timeout_seconds : supprimé dans la version 1.x ; utilisez request_timeout_seconds.
  • request_timeout_seconds (float | None) : délai d’expiration HTTP côté client pour les RPC de la sandbox. Par défaut, SandboxDefaults.request_timeout_seconds de la session.
  • data_plane_mode (DataPlaneMode | str | None) : remplace la politique de transport du plan de données de la session.
  • auth (AuthConfig | None) : stratégie d’authentification, en-têtes résolus ou fournisseur. Remplace la valeur par défaut de la session pour cette sandbox.
  • environment_variables (dict[str, str] | None) : variables d’environnement à injecter dans la sandbox. Fusionnées avec les valeurs par défaut de la session, dont elles remplacent les clés correspondantes. À réserver à une configuration non sensible.
  • annotations (dict[str, str] | None) : annotations de pod Kubernetes pour la sandbox. Fusionnées avec les valeurs par défaut de la session, dont elles remplacent les clés correspondantes. À réserver à des métadonnées non sensibles.
  • secrets (Sequence[Secret | dict[str, Any]] | None) : secrets à injecter sous forme de variables d’environnement. Fusionnés avec les valeurs par défaut de la session (valeurs par défaut d’abord, puis cette liste).
  • containers (Sequence[Container | Mapping[str, Any]] | None) : spécification multiconteneur. Incompatible avec les kwargs monoconteneur. Remplace defaults.secrets, environment_variables, security_context et working_dir de la session ; définissez-les plutôt sur chaque Container. Non utilisé par @session.function().
Renvoie
  • Sandbox : une Sandbox non démarrée, enregistrée auprès de la session.
Exceptions levées
  • SandboxError : si la session a été fermée.
Exemples

list

Liste les sandboxes et peut éventuellement les adopter dans cette session. Inclut automatiquement les tags par défaut de la session dans le filtre. Vous pouvez ainsi retrouver facilement les sandboxes créés par cette session ou par un run précédent utilisant les mêmes valeurs par défaut. Par défaut, seuls les sandboxes actifs (non terminaux) sont renvoyés. Définissez show_terminated=True pour étendre la recherche aux sandboxes terminaux (terminés, en échec, arrêtés définitivement). Un filtre sur un statut terminal (par ex. status="completed") étend également la recherche automatiquement. Paramètres
  • tags (list[str] | None) : tags supplémentaires servant de filtre (fusionnés avec les tags par défaut de la session)
  • status (str | None) : filtre par statut
  • profile_ids (list[str] | None) : supprimé dans la version 1.x ; transmettre une valeur lève une TypeError.
  • profile_names (list[str] | None) : supprimé dans la version 1.x ; transmettre une valeur lève une TypeError.
  • runner_ids (list[str] | None) : filtre par ID d’exécuteurs (par défaut, runner_ids de la session s’il est défini)
  • volume_ids (list[str] | tuple[str, ...] | None) : limite aux sandboxes associés à ces ID de Volumes enregistrés
  • show_terminated (bool) : si True, inclut les sandboxes terminaux (terminés, en échec, arrêtés définitivement). Par défaut : False.
  • adopt (bool) : si True, enregistre les sandboxes découverts auprès de cette session afin qu’ils soient arrêtés à la fermeture de celle-ci
Renvoie
  • OperationRef[list[Sandbox]] : OperationRef[list[Sandbox]] : utilisez .result() pour attendre les résultats de manière bloquante,
  • OperationRef[list[Sandbox]] : ou utilisez directement await dans les contextes asynchrones.
Exemples

from_id

Se rattache à une sandbox existante, en l’adoptant éventuellement dans cette session. Paramètres
  • sandbox_id (str) : l’ID de la sandbox existante
  • adopt (bool) : si True (par défaut), enregistre la sandbox auprès de cette session
Renvoie
  • OperationRef[Sandbox] : OperationRef[Sandbox] : utilisez .result() pour attendre de manière bloquante l’instance Sandbox,
  • OperationRef[Sandbox] : ou utilisez directement await dans les contextes asynchrones.
Exemples

adopt

Adopte une instance Sandbox existante dans cette session afin que son nettoyage soit suivi. Utilisez cette méthode lorsque vous disposez d’une Sandbox obtenue via Sandbox.list() ou Sandbox.from_id() et que vous souhaitez qu’elle soit automatiquement arrêtée à la fermeture de la session. Paramètres
  • sandbox (Sandbox) : instance Sandbox à suivre
Exceptions levées
  • SandboxError : si la session est fermée
  • ValueError : si la sandbox n’a pas de sandbox_id
Exemples

function

Décorateur permettant d’exécuter une fonction Python dans une sandbox. Chaque appel de fonction crée une sandbox éphémère, exécute la fonction, puis renvoie le résultat. La sandbox est automatiquement nettoyée. La fonction décorée doit être synchrone. Les fonctions asynchrones ne sont pas prises en charge. Paramètres
  • container_image (str | None) : remplace l’image par défaut de la session pour cette fonction
  • temp_dir (str | None) : remplace le répertoire temporaire utilisé dans la sandbox pour les fichiers de charge utile et de résultat. Utilise par défaut la valeur de la session. Créé s’il n’existe pas.
  • profile_ids : supprimé dans la version 1.x ; transmettre une valeur lève une TypeError.
  • profile_names : supprimé dans la version 1.x ; transmettre une valeur lève une TypeError.
  • runner_ids (list[str] | None) : épinglage facultatif sur un exécuteur CKS (incompatible avec le mode sans serveur et avec placement_spillover='serverless_then_cks')
  • resources (ResourceOptions | dict[str, Any] | None) : configuration des ressources. Accepte un objet ResourceOptions pour définir séparément les demandes de ressources et les limites, ou un dict plat pour une QoS Guaranteed rétrocompatible.
  • mounted_files (Sequence[dict[str, Any]] | None) : fichiers à monter dans la sandbox au démarrage. Chaque dict doit contenir mount_path (str) et file_content (bytes). Remarque : les fichiers montés sont en lecture seule à l’exécution. Pour modifier un fichier, utilisez sandbox.write_file() une fois la sandbox démarrée.
  • s3_mount : supprimé dans la version 1.x ; transmettre une valeur lève une TypeError.
  • ports : supprimé dans la version 1.x ; utilisez plutôt services=[Service(...)].
  • network (NetworkOptions | dict[str, Any] | None) : NetworkOptions (ou dict) contenant des flags de refus et, éventuellement, des autorisations de noms d’hôte accordées à la création. Pour exposer des ports, utilisez services=.
  • file_system_snapshot (FileSystemSnapshotOptions | dict[str, Any] | None) : options FSS simplifiées pour un montage unique (FileSystemSnapshotOptions ou dict). Privilégiez volumes= pour les configurations à plusieurs volumes.
  • max_timeout_seconds : supprimé dans la version 1.x ; utilisez request_timeout_seconds.
  • request_timeout_seconds (float | None) : délai d’expiration HTTP côté client pour les RPC de la sandbox. Utilise par défaut la valeur SandboxDefaults.request_timeout_seconds de la session.
  • data_plane_mode (DataPlaneMode | str | None) : remplace la politique de transport du plan de données définie pour la session.
  • environment_variables (dict[str, str] | None) : variables d’environnement à injecter dans la sandbox. Elles sont fusionnées avec les valeurs par défaut de la session et remplacent les clés correspondantes. À réserver aux configurations non sensibles.
  • annotations (dict[str, str] | None) : annotations de pod Kubernetes pour la sandbox. Elles sont fusionnées avec les valeurs par défaut de la session et remplacent les clés correspondantes. À réserver aux métadonnées non sensibles.
Renvoie
  • Callable[[Callable[P, R]], RemoteFunction[P, R]] : un décorateur qui encapsule une fonction dans une RemoteFunction
Exemples
Dernière modification le 15 octobre 2026