Skip to main content
Ces exemples utilisent un jeton d’accès à l’API CoreWeave défini dans CWSANDBOX_API_KEY. Pour l’authentification par clé API Forge, voir Premiers pas. Pour les exigences relatives à CKS, voir Modes de placement. Ce guide présente le décorateur @session.function(), qui permet d’exécuter des fonctions Python dans des sandboxes. Il s’adresse aux développeurs qui souhaitent déporter des calculs Python ponctuels vers des environnements isolés sans avoir à gérer eux-mêmes le cycle de vie d’un sandbox. Il explique comment définir des fonctions distantes, quels types d’arguments et de valeurs de retour l’API prend en charge, et dans quels cas cette API est la plus adaptée.

Aperçu

L’API de décorateur de fonction vous permet d’exécuter des fonctions Python dans des conteneurs sandbox isolés. Utilisez-la pour exécuter à distance des traitements Python distincts tout en conservant un code appelant simple :

Utilisation de base

Définir des fonctions

Décorez les fonctions avec @session.function() :

Appeler des fonctions

Appelez .remote() sur la fonction décorée pour l’exécuter dans le sandbox :

Méthodes d’exécution

Exécuter en parallèle avec map()

Exécutez sur plusieurs entrées :
Avec des tuples pour des arguments multiples :

Exécuter en local avec local()

Exécutez le code en local, sans sandbox, ce qui est pratique pour les tests :

Types des arguments et des valeurs de retour

Les fonctions distantes transmettent les arguments et les valeurs de retour au format JSON. Ils doivent donc être sérialisables en JSON : dictionnaires, listes, chaînes de caractères, nombres, booléens et None.
Si vous transmettez un argument non représentable en JSON, l’appel lève une exception TypeError avant le démarrage de la sandbox :
Example output
Une valeur de retour que JSON ne peut pas représenter provoque le même échec, avec le message return value is not JSON-serializable. Les objets JSON n’acceptent que des clés de type string. Un dictionnaire dont les clés sont des entiers, des nombres à virgule flottante ou des booléens est rejeté plutôt que converti : ainsi, les types que reçoit votre fonction dans la sandbox correspondent à ceux que vous avez transmis. Pour manipuler des tableaux NumPy, des DataFrames pandas ou des instances de classes personnalisées, convertissez-les en valeurs compatibles avec JSON avant d’appeler la fonction, puis reconstruisez-les à l’intérieur de celle-ci :
Le client n’installe rien avant d’exécuter votre fonction. Toute bibliothèque importée par la fonction, comme NumPy, doit déjà être présente dans l’image de conteneur. Si les données sont trop volumineuses pour être transmises en JSON, écrivez-les dans un stockage accessible depuis la sandbox et transmettez plutôt une référence. Voir Opérations sur les fichiers.

Closures et variables globales

Variables de closure

Les fonctions capturent les variables de leur portée englobante :

Variables globales

Le décorateur sérialise avec la fonction les variables globales auxquelles elle fait référence :
Les variables de closure capturées et les variables globales sont transférées vers la sandbox au format JSON, tout comme les arguments et les valeurs de retour. Si une fonction capture une valeur non représentable en JSON, l’appel échoue pour cette raison, même si tous les arguments que vous transmettez sont valides.

Image de conteneur

Remplacez l’image de conteneur pour certaines fonctions :

Gestion des erreurs

Les exceptions levées par une fonction se propagent jusqu’à l’appelant :

Quand utiliser les fonctions plutôt que les sandboxes

Utilisez le tableau suivant pour déterminer laquelle de l’API du décorateur de fonction ou de l’API sandbox convient le mieux à votre charge de travail.

Limitations

L’API de fonctions est volontairement simple. Pour les flux de travail complexes :
  • Nouvelles tentatives et backoff : implémentez-les dans le code appelant.
  • Dépendances entre tâches et DAG : utilisez un orchestrateur de flux de travail comme Airflow ou Prefect.
  • Ordonnancement complexe : utilisez directement l’API de sandbox.

Exemple complet

L’exemple suivant réunit les concepts présentés dans ce guide. Il illustre l’exécution unique et l’exécution parallèle, ainsi qu’un calcul dont l’argument et la valeur de retour sont transmis au format JSON :
Dernière modification le 15 octobre 2026