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 :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 etNone.
TypeError avant le démarrage de la sandbox :
Example output
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 :
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 :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.