Propriétés
sandbox_id
returncode
None si elle est toujours en cours d’exécution.
runner_id
status
status_updated_at
started_at
runner_group_id
service_urls
service_endpoints
service_addresses
containers
container_statuses
status de la sandbox reste déterminé par le conteneur principal.
dns_egress_names
status.effective_egress.
effective_runtime_class
attached_volume_ids
effective_egress
status.effective_egress.
effective_ingress
status.effective_ingress.
exposed_ports
(container_port, name) exposées, dérivées des services typés.
resource_limits
resource_requests
resource_gpu
file_system_snapshot_id
stop(snapshot_on_stop=True).
exec_stats
Méthodes
run
*args(str) : commande et arguments facultatifs (par exemple, “echo”, “hello”, “world”). S’ils sont omis, la commande par défaut de SandboxDefaults est utilisée.container_image(str | None) : image de conteneur à utiliserdefaults(SandboxDefaults | None) : SandboxDefaults facultatif à appliquerauth(AuthConfig | None) : mode ou fournisseur d’authentification. Remplacedefaults.auth.request_timeout_seconds(float | None) : délai d’expiration des requêtes API (côté client)poll_retry_budget_seconds(float | None) : budget de temps réel alloué aux nouvelles tentatives en cas d’erreurs transitoires dans la boucle d’interrogation du statut de la sandbox (par défaut : 30 s). Définissez-le sur 0 pour désactiver les nouvelles tentatives.poll_rpc_timeout_seconds(float | None) : délai d’expiration par appel pour les RPC Get d’interrogation (par défaut : 15 s). Distinct de request_timeout_seconds.max_lifetime_seconds(float | None) : durée de vie maximale de la sandbox (côté serveur)tags(list[str] | None) : étiquettes facultatives pour la sandboxprofile_ids(list[str] | None) : supprimé dans la version 1.x ; toute valeur transmise lève uneTypeError.profile_names(list[str] | None) : supprimé dans la version 1.x ; toute valeur transmise lève uneTypeError.runner_ids(list[str] | None) : épinglage facultatif sur un exécuteur CKS (incompatible avec le mode sans serveur et avecplacement_spillover='serverless_then_cks').resources(ResourceOptions | dict[str, Any] | None) : configuration des ressources. Accepte 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(list[dict[str, Any]] | None) : fichiers à monter dans la sandbox au démarrage. Chaque dict doit contenirmount_path(str) etfile_content(bytes). Remarque : les fichiers montés sont en lecture seule à l’exécution. Pour modifier un fichier, utilisezsandbox.write_file()une fois la sandbox en cours d’exécution.s3_mount(dict[str, Any] | None) : supprimé dans la version 1.x ; toute valeur transmise lève uneTypeError.ports(list[dict[str, Any]] | None) : supprimé dans la version 1.x ; utilisez plutôtservices=[Service(...)].network(NetworkOptions | dict[str, Any] | None) :NetworkOptions(ou dict) avec des flags de refus et des autorisations facultatives de noms d’hôte définies à la création (egress=[EgressRule(dns_name=...)]). L’exposition des ports passe parservices=.placement_mode(PlacementMode | str | None) :PlacementModeou chaîne (serverless/cks).placement_spillover(PlacementSpillover | str | None) :PlacementSpilloverou chaîne. Par défaut :strict. VoirSandbox.__init__.services(list[Service] | tuple[Service, ...] | None) : ports de service typés (liste/tuple deService).volumes(list[ScratchVolumeOptions | RegisteredVolumeOptions | dict[str, Any]] | tuple[ScratchVolumeOptions | RegisteredVolumeOptions | dict[str, Any], ...] | None) : volumes temporaires ou enregistrés (ScratchVolumeOptions,RegisteredVolumeOptionsou un dictvolume_id).runtime_class(str | None) : épinglage facultatif d’une classe de runtime (par exemple,"gvisor").security_context(SecurityContext | dict[str, Any] | None) : privilèges dans l’invité pour le conteneur principal.working_dir(str | None) : répertoire de travail de la commande du conteneur principal.object_storage_access(ObjectStorageAccess | dict[str, Any] | None) : identifiants d’authentification temporaires pour le stockage d’objets.file_system_snapshot(FileSystemSnapshotOptions | dict[str, Any] | None) : options FSS simplifiées pour un montage unique (FileSystemSnapshotOptionsou dict). Privilégiezvolumes=pour les configurations à plusieurs volumes.max_timeout_seconds(int | None) : supprimé dans la version 1.x ; utilisezrequest_timeout_seconds.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 en tant que variables d’environnement lors de la création. Fusionnés avec les valeurs par défaut (d’abord les valeurs par défaut, puis cette liste).data_plane_mode(DataPlaneMode | str | None) : politique de transport pour l’exécution, les journaux et les opérations sur les fichiers.autoprivilégie le mTLS direct, avec repli sur la passerelle.containers(Sequence[Container | Mapping[str, Any]] | None) : spécification multi-conteneurs. Incompatible avec les arguments positionnels command/args ainsi qu’aveccontainer_image,resources,mounted_files,secrets,image_pull_credentials,environment_variables,security_contextetworking_dir. Cette liste remplace ces champs propres à un conteneur unique, y compris les champs de même nom dansSandboxDefaults. Définissez les secrets, les variables d’environnement et working_dir dans chaqueContainer.
run_from_template
template_id(str) : UUID du modèle, limité à l’organisation.*args(str) : remplacement facultatif des arguments de la commande. Pris en compte en l’absence decommand. Les surcouches partielles d’un conteneur unique nécessitent toujourscontainer_image.command(str | None) : remplacement facultatif de la commande. Nécessitecontainer_image, sauf sicontainers=remplace la liste entière.defaults(SandboxDefaults | None) : SandboxDefaults facultatif.**kwargs(Any) : mêmes kwargs de création avancés querun(). Le passage decontainer_imageremplace l’intégralité du conteneur du modèle (commande, arguments, variables d’environnement, fichiers, ressources, nommain) ; le conteneur existant n’est ni récupéré ni fusionné.containers=remplace la liste complète et ne nécessite pascontainer_image. Les autres surcouches de champs de conteneur (command,args,environment_variables,secrets,resources,mounted_files,volumes,file_system_snapshot,image_pull_credentials,security_context,working_dir) nécessitentcontainer_image, sauf sicontainers=remplace la liste : l’API remplace la liste entière des conteneurs et rejette tout patch partiel. Les tags de session et par défaut sont fusionnés puis envoyés sous forme de remplacement appliqué dès qu’ils sont présents, afin quelist()/adoptpuissent trouver la sandbox ; les variables d’environnement et les annotations ne sont pas fusionnées (elles relèvent du modèle).
Sandbox: handle de la sandbox (démarrage différé).
run_from_file
contents sous forme d’octets bruts et
ne normalise pas le YAML : un même request_id associé à des octets différents
(y compris des modifications portant uniquement sur les caractères d’espacement) produit CWSANDBOX_REQUEST_ID_CONFLICT.
Rend la main dès que le backend accepte la requête ; utilisez wait() pour attendre
RUNNING. N’attendez pas PREPARING.
GetSandbox renvoie la spécification traduite, et non le fichier source. Une directive build:
Compose résiduelle produit CWSANDBOX_NOT_IMPLEMENTED. Pour éviter la compilation,
définissez image: dans le YAML ou utilisez image_overrides.
Paramètres
contents(str | Path | bytes) : chemin du fichier Compose (str/Path) ou octets YAML bruts. Unestrest toujours interprétée comme un chemin ; pour transmettre du texte Compose, passez-le sous forme debytes(.encode("utf-8")). Taille plafonnée à 256 Kio. Les octets sont envoyés tels quels.primary_service(str) : service Compose qui joue le rôle de service principal de la sandbox.file_type(SandboxFileType | str) : type de document. Valeur par défaut :compose.image_overrides(Mapping[str, str] | None) : réf. d’images récupérables, par service. Les clés doivent correspondre à des services définis danscontents.default_resources(ResourceOptions | dict[str, Any] | None) : CPU/mémoire appliqués à chaque service qui ne définit pasdeploy.resources. S’applique par conteneur, et non comme un budget de projet. Le GPU est rejeté localement (la passerelle le rejette également).defaults(SandboxDefaults | None) :SandboxDefaultsfacultatif. Les tags, le réseau,placement_mode,runner_ids, les annotations, l’accès au stockage d’objets et la durée de vie maximale sont hérités. Les valeurs par défaut de conteneur, de volume et de service ne le sont pas. Unplacement_spillovernon strict dans les valeurs par défaut est ignoré (la création à partir d’un fichier est toujours stricte). Un argument nommé explicite non strict lève une exception.request_id(str | None) : jeton d’idempotence facultatif. Généré automatiquement s’il est omis.**kwargs(Any) : rejetés. Ce RPC n’accepte ni les volumes, ni les services publiés, niruntime_class,image_pull_credentials,network_idsoubuild_contexts.
Sandbox: handle de la sandbox (création acceptée ; la sandbox peut être encore en cours de démarrage).
session
- Une configuration partagée grâce aux valeurs par défaut
- Le nettoyage automatique des bacs à sable orphelins
- L’exécution de fonctions grâce au décorateur @session.function() Paramètres
-
defaults(SandboxDefaults | Mapping[str, Any] | None) : valeurs par défaut facultatives à appliquer aux bacs à sable créés par la session -
auth(AuthConfig | None) : stratégie d’authentification, en-têtes résolus ou fournisseur. S’il est fourni, ce paramètre remplacedefaults.auth.
Session: une instance de Session
list
show_terminated=True pour élargir la recherche aux bacs à sable
terminaux (terminés, en échec, arrêtés).
Un filtre sur un statut terminal (par exemple status="completed") élargit également
la recherche automatiquement.
Paramètres
tags(list[str] | None) : filtre par tags (les bacs à sable doivent posséder TOUS les tags spécifiés)status(str | None) : filtre par statut (“running”, “completed”, “failed”, etc.)profile_ids(list[str] | None) : supprimé dans la version 1.x ; toute valeur transmise lève uneTypeError.profile_names(list[str] | None) : supprimé dans la version 1.x ; toute valeur transmise lève uneTypeError.runner_ids(list[str] | None) : filtre par ID d’exécuteurvolume_ids(list[str] | tuple[str, ...] | None) : limite les résultats aux bacs à sable associés à ces ID de Volumes enregistrésshow_terminated(bool) : si True, inclut les bacs à sable terminaux (terminés, en échec, arrêtés). Valeur par défaut : False.base_url(str | None) : remplace l’URL de l’API (par défaut : variable d’environnement CWSANDBOX_BASE_URL ou valeur par défaut)auth(AuthConfig | None) : stratégie d’authentification, en-têtes résolus ou fournisseur à utiliser pour cette requête.timeout_seconds(float | None) : délai d’expiration de la requête (par défaut : 300 s)poll_retry_budget_seconds(float | None) : budget de temps réel alloué aux nouvelles tentatives en cas d’erreurs transitoires dans la boucle d’interrogation du statut du sandbox (par défaut : 30 s). Définissez 0 pour désactiver les nouvelles tentatives. S’applique aux instances de Sandbox renvoyées.poll_rpc_timeout_seconds(float | None) : délai d’expiration par appel pour les RPC Get d’interrogation (par défaut : 15 s). Distinct detimeout_seconds. S’applique aux instances de Sandbox renvoyées.data_plane_mode(DataPlaneMode | str) : politique de transport appliquée aux bacs à sable renvoyés.
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.
from_id
sandbox_id(str) : l’ID de la sandbox existantebase_url(str | None) : remplace l’URL de l’API (par défaut : variable d’environnement CWSANDBOX_BASE_URL ou valeur par défaut)auth(AuthConfig | None) : stratégie d’authentification, en-têtes résolus ou fournisseur pour cette requête.timeout_seconds(float | None) : délai d’expiration de la requête (par défaut : 300 s)poll_retry_budget_seconds(float | None) : budget de temps réel alloué aux nouvelles tentatives en cas d’erreurs transitoires dans la boucle d’interrogation du statut de la sandbox (par défaut : 30 s). Définissez-le sur 0 pour désactiver les nouvelles tentatives. S’applique à l’instance de Sandbox renvoyée.poll_rpc_timeout_seconds(float | None) : délai d’expiration par appel pour les RPC Get d’interrogation (par défaut : 15 s). Distinct detimeout_seconds. S’applique à l’instance de Sandbox renvoyée.data_plane_mode(DataPlaneMode | str) : politique de transport appliquée à la sandbox renvoyée.
OperationRef[Sandbox]: OperationRef[Sandbox] : utilisez .result() pour obtenir l’instance de Sandbox de manière bloquante,OperationRef[Sandbox]: ou utilisez directement await dans les contextes asynchrones.
SandboxNotFoundError: si la sandbox n’existe pas
delete
sandbox_id(str) : ID de la sandbox à supprimerbase_url(str | None) : remplace l’URL de l’API (par défaut : variable d’environnement CWSANDBOX_BASE_URL ou valeur par défaut)auth(AuthConfig | None) : stratégie d’authentification, en-têtes résolus ou fournisseur pour cette requête.timeout_seconds(float | None) : délai d’expiration de la requête (par défaut : 300 s)missing_ok(bool) : si True, ignore l’erreur SandboxNotFoundError lorsque la sandbox n’existe pas.
OperationRef[None]: OperationRef[None] : utilisez .result() pour attendre la fin de l’opération.OperationRef[None]: lève SandboxNotFoundError si la sandbox est introuvable (sauf si missing_ok=True),OperationRef[None]: SandboxError si la suppression a échoué.
SandboxNotFoundError: si la sandbox n’existe pas et que missing_ok=FalseSandboxError: si la suppression a échoué pour une autre raison
get_snapshot
file_system_snapshot_id(str) : ID de l’instantané à récupérer.base_url(str | None) : remplace l’URL de l’API (par défaut : variable d’environnement CWSANDBOX_BASE_URL ou valeur par défaut).auth(AuthConfig | None) : stratégie d’authentification, en-têtes résolus ou fournisseur pour cette requête.timeout_seconds(float | None) : délai d’expiration de la requête (par défaut : 300 s).
OperationRef[FileSystemSnapshot]: OperationRef[FileSystemSnapshot] : utilisez .result() pour un appel bloquant, ou await.OperationRef[FileSystemSnapshot]: lève SnapshotNotFoundError si l’instantané n’existe pas.
list_snapshots
source_sandbox_id et status sont appliqués côté client
(le RPC de liste du backend ne filtre pas) : tous les instantanés sont donc récupérés
avant le filtrage.
Paramètres
source_sandbox_id(str | None) : si défini, seuls les instantanés capturés à partir de cette sandbox sont renvoyés.status(FileSystemSnapshotStatus | str | None) : si défini, seuls les instantanés ayant ce statut sont renvoyés (FileSystemSnapshotStatus ou sa valeur string).base_url(str | None) : remplace l’URL de l’API (par défaut : variable d’environnement CWSANDBOX_BASE_URL ou valeur par défaut).auth(AuthConfig | None) : stratégie d’authentification, en-têtes résolus ou fournisseur pour cette requête.timeout_seconds(float | None) : délai d’expiration de la requête (par défaut : 300 s).
OperationRef[list[FileSystemSnapshot]]: OperationRef[list[FileSystemSnapshot]] : utilisez .result() pour un appel bloquant, ou await.
delete_snapshot
file_system_snapshot_id(str) : ID de l’instantané à supprimer.base_url(str | None) : remplace l’URL de l’API (par défaut : variable d’environnement CWSANDBOX_BASE_URL ou valeur par défaut).auth(AuthConfig | None) : stratégie d’authentification, en-têtes résolus ou fournisseur pour cette requête.timeout_seconds(float | None) : délai d’expiration de la requête (par défaut : 300 s).missing_ok(bool) : si True, ignore l’exception SnapshotNotFoundError lorsque l’instantané n’existe pas (déjà supprimé).
OperationRef[None]: OperationRef[None] : utilisez .result() pour un appel bloquant, ou await.OperationRef[None]: lève SnapshotNotFoundError si l’instantané est introuvable (sauf si missing_ok=True).
get_snapshot_bucket_config
base_url(str | None) : Remplacer l’URL de l’API (par défaut : variable d’environnement CWSANDBOX_BASE_URL ou valeur par défaut).auth(AuthConfig | None) : Stratégie d’authentification, en-têtes résolus ou fournisseur à utiliser pour cette requête.timeout_seconds(float | None) : Délai d’expiration de la requête (par défaut : 300 s).
OperationRef[FileSystemSnapshotBucketConfig]: OperationRef[FileSystemSnapshotBucketConfig] : utilisez .result() ou await.
set_snapshot_bucket_config
bucket_name pour utiliser votre propre bucket ; passez une chaîne
vide pour revenir au bucket managé par CoreWeave. Cette opération est
réservée aux administrateurs.
Paramètres
bucket_name(str) : bucket dans lequel archiver les instantanés. Une chaîne vide rétablit le bucket managé par CoreWeave.region(str) : région du bucket (requise par certains fournisseurs pour les buckets BYO).base_url(str | None) : remplace l’URL de l’API (par défaut : variable d’environnement CWSANDBOX_BASE_URL ou valeur par défaut).auth(AuthConfig | None) : stratégie d’authentification, en-têtes résolus ou fournisseur à utiliser pour cette requête.timeout_seconds(float | None) : délai d’expiration de la requête (par défaut : 300 s).
OperationRef[FileSystemSnapshotBucketConfig]: OperationRef[FileSystemSnapshotBucketConfig] : la configuration mise à jour.
get_status
SandboxStatus: valeur de l’énumération SandboxStatus
SandboxNotRunningError: si la sandbox n’a pas été démarrée
start
OperationRef[None]: OperationRef[None] : utilisez .result() pour bloquer l’exécution jusqu’à ce que le backend accepte la requête.
wait
timeout(float | None) : Nombre maximal de secondes d’attente. None signifie que le délai d’expiration par défaut est utilisé.
Sandbox: L’instance elle-même, pour permettre le chaînage de méthodes. Consultez .status pour déterminer l’état final.
SandboxFailedError: Si la sandbox ne parvient pas à démarrerSandboxTerminatedError: Si la sandbox a été arrêtée de l’extérieurSandboxTimeoutError: Si le délai d’expiration est dépassé
wait_until_complete
returncode pour connaître les cas où il
reste None).
Paramètres
timeout(float | None) : durée d’attente maximale, en secondes. None signifie que le délai d’expiration par défaut s’applique.raise_on_termination(bool) : si True (valeur par défaut), lève SandboxTerminatedError lorsque ce client a appelé stop() ou que le backend signale l’ancien statut TERMINATED. Les arrêts externes (infrastructure, limites de durée de vie, autres clients) qui aboutissent à COMPLETED ne peuvent pas être détectés tant que le backend ne fournit pas la métadonnée termination_reason. Définissez la valeur sur False pour ne jamais lever SandboxTerminatedError.
OperationRef[Sandbox]: OperationRef[Sandbox] : utilisez .result() pour bloquer, ou await dans les contextes asynchrones.
SandboxTimeoutError: si le délai d’expiration est dépasséSandboxTerminatedError: si la sandbox a été arrêtée par ce client ou signalée comme TERMINATED par le backend (et que raise_on_termination=True)SandboxFailedError: si la sandbox a échoué
poll_retry_budget_seconds est un sous-délai d’expiration strict, compris dans le paramètre timeout de l’utilisateur. Avec un budget de nouvelles tentatives de 30 s et un délai d’expiration utilisateur de 300 s, des erreurs d’épuisement du budget peuvent survenir au bout d’environ 30 s. Si vous souhaitez prolonger les nouvelles tentatives, configurez poll_retry_budget_seconds en conséquence.
Exemples
stop
snapshot_on_stop=True
qui se rattacherait à (ou observerait) un arrêt ne capturant pas de
snapshot, parce que la sandbox est déjà en cours d’arrêt, déjà arrêtée, ou
qu’un simple stop() est déjà en cours, lève
SnapshotOnStopConflictError au lieu de se terminer silencieusement sans
archive. Les arrêts simples sont toujours regroupés.
La sandbox est désinscrite de sa session, que l’arrêt
ait réussi ou non, car elle n’est plus utilisable.
Paramètres
snapshot_on_stop(bool) : si True, capture un instantané du système de fichiers (FSS) du point de montage configuré avant l’arrêt. L’ID du snapshot obtenu est accessible via la propriétéfile_system_snapshot_idune fois l’OperationRef renvoyé résolu. Nécessite que la sandbox ait été démarrée avec un point de montagefile_system_snapshotet que FSS soit activé pour l’organisation. LèveSnapshotOnStopConflictErrorsi un arrêt qui ne capturera pas de snapshot est déjà en cours.graceful_shutdown_seconds(float) : délai d’attente pour l’arrêt en douceur. Avecsnapshot_on_stop=True, il s’agit du délai de grâce de suppression du pod après l’archivage, appliqué après la fin du snapshot ; l’échéance côté client couvre donc le budget d’archivage plus ce délai de grâce. En v1,grace_period_seconds=0signifie un arrêt immédiat (aucun délai de grâce de substitution côté backend). Le backend plafonne cette valeur à 300 s pour snapshot-on-stop.missing_ok(bool) : si True, supprime SandboxNotFoundError lorsque la sandbox n’existe pas. Avecsnapshot_on_stop=True, l’option est tout de même envoyée sous la formeallow_missing; une sandbox introuvable ou un rejet de cette combinaison par le serveur lèveSnapshotOnStopConflictErrorau lieu de réussir sans archive.wait_for_ready(bool) : lorsquesnapshot_on_stopvaut True, bloque jusqu’à ce que le snapshot atteigne READY (ou FAILED) avant la fin de l’arrêt. Ignoré lorsquesnapshot_on_stopvaut False.request_id(str | None) : clé facultative fournie par le client pour dédupliquer la requête snapshot-on-stop lors des nouvelles tentatives. Ignoré lorsquesnapshot_on_stopvaut False.
OperationRef[None]: OperationRef[None] : utilisez .result() pour bloquer jusqu’à l’état terminal.OperationRef[None]: lève SandboxError en cas d’échec, SandboxNotFoundError si introuvableOperationRef[None]: (sauf si missing_ok=True).
snapshot
file_system_snapshot sur la
sandbox en cours d’exécution, sans l’arrêter. Démarre d’abord la sandbox si elle
n’a pas encore été démarrée. Restaurez l’instantané dans une nouvelle sandbox via
Sandbox.run(file_system_snapshot=FileSystemSnapshotOptions(..., file_system_snapshot_id=<id>)).
Nécessite que la sandbox ait été démarrée avec un point de montage file_system_snapshot
et que FSS soit activé pour l’organisation.
Paramètres
wait_for_ready(bool) : bloque jusqu’à ce que l’instantané atteigne l’état READY (ou FAILED) avant de rendre la main. Si False, rend la main dès que l’instantané est créé (probablement encore à l’état CREATING).request_id(str | None) : clé facultative fournie par le client pour dédupliquer la requête en cas de nouvelles tentatives.
OperationRef[str]: OperationRef[str] : utilisez .result() pour attendre de manière bloquante (ou await) l’ID du nouvelOperationRef[str]: instantané. AppelezSandbox.get_snapshot(id)pour obtenir l’enregistrement completOperationRef[str]: (statut, taille, horodatages).
SandboxSnapshotError: si l’instantané échoue (voir les sous-classes pourNOT_SUPPORTEDlorsque FSS n’est pas activé pour l’organisation, quota/taille, etc.).
exec
command(Sequence[str]) : commande et arguments à exécutercwd(str | None) : répertoire de travail dans lequel exécuter la commande. Doit être un chemin absolu. S’il est spécifié, la commande est encapsulée dans un cd du shell.check(bool) : si True, lève SandboxExecutionError lorsque le code de retour est non nultimeout_seconds(float | None) : délai d’expiration de l’exécution de la commande (une fois le sandbox à l’état RUNNING). N’inclut pas le temps d’attente nécessaire pour que le sandbox atteigne le statut RUNNING.stdin(bool) : si True, active la diffusion en continu de stdin. Process.stdin est alors un StreamWriter capable d’envoyer des entrées à la commande. Si False (par défaut), stdin est fermé immédiatement et Process.stdin vaut None.container(str | None) : nom du conteneur dans lequel exécuter la commande. Une valeur vide ou None cible le conteneur principal.
Process: handle de processus avec diffusion en continu de stdout/stderr. Appelez .result() pour bloquerProcess: jusqu’à l’obtention du ProcessResult final, ou itérez sur .stdout/.stderr pour obtenirProcess: la sortie en temps réel. Lorsque stdin=True, Process.stdin est un StreamWriter.
ValueError: si la commande est vide ou si cwd est invalide (chemin vide ou relatif)
shell
command(Sequence[str] | None) : commande shell à exécuter. Valeur par défaut : [“/bin/bash”]. Accepte une séquence telle que [“/bin/sh”] ou [“/usr/bin/python3”].width(int | None) : largeur initiale du terminal, en colonnes.height(int | None) : hauteur initiale du terminal, en lignes.container(str | None) : nom du conteneur de la session TTY. Si la valeur est vide ou None, le conteneur principal est ciblé.
TerminalSession: handle TerminalSession exposant .output (StreamReader[bytes]),TerminalSession: .stdin (StreamWriter) et .resize(w, h).
ValueError: si la commande est explicitement vide.
read_file
filepath(str) : chemin du fichier dans la sandboxtimeout_seconds(float | None) : délai d’expiration de l’opérationcontainer(str | None) : conteneur dans lequel lire. Une valeur vide ou None cible le conteneur principal.
OperationRef[bytes]: OperationRef[bytes] : utilisez .result() pour bloquer et récupérer le contenu.
CWSANDBOX_FILE_TOO_LARGE ; utilisez alors read_file_streaming. Quel que soit le mode de lecture, l’intégralité du résultat est conservée en mémoire. Le client ne peut pas toujours connaître à l’avance la taille du fichier distant (par exemple lorsque le backend signale la lecture trop volumineuse par un épuisement des ressources plutôt que par un CWSANDBOX_FILE_TOO_LARGE précisant la taille) ; un fichier très volumineux peut donc malgré tout être placé intégralement en mémoire tampon au lieu d’être refusé. Pour tout fichier volumineux, privilégiez read_file_streaming afin de le consommer de manière incrémentielle et de limiter l’utilisation de la mémoire.
Exceptions levées
SandboxFileError: avecreason == CWSANDBOX_FILE_TOO_LARGElorsque le fichier dépasse le plafond du serveur et que celui-ci a indiqué sa taille ; ou avecreason == CWSANDBOX_FILE_TRUNCATEDlorsqu’une lecture en diffusion en continu renvoie moins de données que la taille du fichier (troncature détectée par rapport à la taille obtenue avant la lecture).SandboxStreamBackpressureError: lorsqu’une lecture volumineuse bascule en diffusion en continu et que la sortie est produite plus vite que le client ne la lit (sous-classe de SandboxExecutionError).
write_file
filepath(str) : chemin du fichier dans la sandboxcontents(bytes) : contenu du fichier sous forme d’octetstimeout_seconds(float | None) : délai d’expiration de l’opérationcontainer(str | None) : conteneur dans lequel écrire. Une valeur vide ou None cible le conteneur principal.
OperationRef[None]: OperationRef[None] : utilisez .result() pour bloquer jusqu’à la fin de l’opération.
write_file_streaming.
Exceptions levées
SandboxFileError: avecreason == CWSANDBOX_FILE_TOO_LARGElorsque la charge utile dépasse le plafond du serveur, ou (sans ce motif) si une écriture en diffusion en continu échoue en cours de route et a pu laisser un fichier partiel.SandboxStreamBackpressureError: lorsqu’une écriture volumineuse bascule vers la diffusion en continu et que la source produit des données plus vite qu’elles ne peuvent être envoyées (sous-classe de SandboxExecutionError).
write_file_streaming
write_file pour les charges utiles de plus de
32 Mio environ, ou dès que les données se présentent déjà sous forme d’itérateur (descripteur de fichier,
générateur, producteur asynchrone).
Paramètres
filepath(str) : chemin absolu dans la sandbox.source(bytes | Iterable[bytes] | AsyncIterable[bytes]) : charge utile sous forme debytes, d’unIterable[bytes]synchrone ou d’unAsyncIterable[bytes]. L’entrée est découpée en fragments compatibles avec le tramage avant la transmission. Les éléments produits doivent être de typebytes,bytearrayoumemoryview; tout autre type lève uneTypeError.timeout_seconds(float | None) : délai d’expiration, en temps réel, de l’écriture en diffusion en continu.
OperationRef[None]:OperationRef[None]: appelez.result()pour bloquer jusqu’à la fin de l’opération.
SandboxStreamBackpressureError: si la source produit des données plus vite qu’elles ne peuvent être envoyées et que le flux est interrompu prématurément. Utilisez une source dont vous pouvez réguler le débit, ou découpez au préalable les téléversements volumineux en fragments ; consultez la docstring de cette exception pour plus de détails.
open(...)) est lue sur un thread worker, si bien qu’un read bloquant ne fige pas la boucle d’événements du SDK. Une source asynchrone est attendue directement. Les deux conviennent : choisissez celle qui se prête le mieux à vos données.
read_file_streaming
read_file pour les fichiers de plus de 32 Mio environ,
ou chaque fois que vous souhaitez consommer le fichier de manière incrémentielle (écriture sur
disque, calcul d’un hachage à la volée, analyse ligne par ligne).
Pour les fichiers volumineux, le SDK relève la taille du fichier avant la lecture et,
une fois le flux terminé, vérifie qu’au moins ce nombre d’octets a bien été
reçu. Si ce n’est pas le cas, l’itérateur lève SandboxFileError
avec le motif CWSANDBOX_FILE_TRUNCATED, ce qui permet à l’appelant de détecter une lecture
incomplète silencieuse au lieu de consommer un fichier partiel. (Comme la taille est
mesurée avant la lecture, un fichier auquel des données sont ajoutées pendant la lecture n’est jamais pris pour une
troncature.) Cette vérification n’est pas effectuée pour les petits fichiers, qui ne peuvent pas subir de troncature
silencieuse, et elle n’est assurée qu’au mieux lorsque la taille ne peut pas être
déterminée.
Si votre boucle lit les fragments plus lentement que le fichier n’est diffusé (par exemple, si vous effectuez
un traitement lent entre les itérations), la lecture peut être interrompue prématurément par
SandboxStreamBackpressureError. Itérez sans attendre et sortez les traitements lents
de la boucle de lecture ; consultez la docstring de cette exception pour plus de détails.
Paramètres
filepath(str) : chemin absolu dans la sandbox.timeout_seconds(float | None) : délai d’expiration, en temps réel, de la lecture en diffusion en continu.
StreamReader[bytes]:StreamReader[bytes]produisant les fragments dans l’ordre. La fin du fichier estStreamReader[bytes]: signalée par l’épuisement normal de l’itérateur. Les erreurs (fichier introuvable,StreamReader[bytes]: autorisation refusée, troncature, lecteur trop lent) sont levées à nouveauStreamReader[bytes]: lorsque le consommateur les atteint au cours de l’itération.
close() sur celui-ci. Le SDK installe un finaliseur qui annule la tâche en arrière-plan lors du garbage collection, mais une fermeture explicite libère les ressources plus tôt. Une quantité limitée de sortie est placée en mémoire tampon en amont de votre boucle afin d’absorber les pics et d’appliquer une contre-pression, mais il ne s’agit pas d’un plafond de mémoire strict : la mémoire résidente continue d’augmenter à mesure que votre boucle prend du retard. Gardez la boucle de lecture aussi légère que possible et déportez hors de celle-ci tout traitement lent par fragment (voir examples/large_file_streaming.py).
stream_logs
Sandbox.run() (ou, par défaut, la commande de maintien en vie
interceptée par le shell). La sortie des commandes lancées via exec() n’est pas
incluse ; pour celles-ci, utilisez Process.stdout/Process.stderr.
.. note::
Les sandboxes créées avec la commande de maintien en vie par défaut ne
produisent aucun log. Pour afficher des logs ici, transmettez une commande qui
écrit sur stdout/stderr lors de l’appel à Sandbox.run().
Renvoie un StreamReader qui génère les lignes de log sous forme de chaînes de caractères. La méthode
rend la main immédiatement ; l’itération sur le StreamReader reste bloquée jusqu’à
l’arrivée de données.
Paramètres
follow(bool) : si True, diffuse en continu les nouveaux logs (commetail -f). Si False, diffuse les logs existants de la sandbox en cours d’exécution, puis s’arrête. Les sandboxes arrêtées rejettentStreamLogs.tail_lines(int | None) : nombre de lignes les plus récentes à récupérer. Si None, renvoie toutes les lignes disponibles.since_time(datetime | None) : renvoie uniquement les logs postérieurs à cet horodatage. Doit inclure un fuseau horaire ; les datetimes naïfs lèventValueError.timestamps(bool) : si True, préfixe chaque ligne d’un horodatage ISO 8601 fourni par le serveur.timeout_seconds(float | None) : délai limite côté client pour l’appel gRPC. Vaut par défautrequest_timeout_secondslorsquefollow=False, etNone(aucun délai d’expiration) lorsquefollow=True.container(str | None) : conteneur dont les logs doivent être diffusés. Une valeur vide ou None cible le conteneur principal.
StreamReader[str]: StreamReader générant les lignes de log sous forme de chaînes de caractères. Itérez de manière synchroneStreamReader[str]: avecfor line in readerou de manière asynchrone avecStreamReader[str]:async for line in reader.
SandboxNotRunningError: sifollow=Trueet que la sandbox a été arrêtée.SandboxError: si le flux de logs rencontre une erreur.