Skip to main content
Ce guide explique comment utiliser le SDK novita-gpus pour appeler un Endpoint serverless asynchrone et comment personnaliser un handler de worker.

1. Installer le SDK

Installez le SDK dans votre environnement client ou dans l’environnement d’exécution du worker :

2. Soumettre des jobs avec le SDK

L’URL de requête par défaut du SDK novita-gpus est https://async-public.serverless.novita.ai/v1. Pour appeler un Endpoint, définissez votre API Key et créez un client avec le nom de l’Endpoint.

3. Exemple de job ComfyUI

Pour novitalabs/comfyui-worker:v0.0.1, l’entrée du job doit inclure un workflow ComfyUI. L’exemple minimal suivant correspond au cas testé :

4. Handler personnalisé

Côté worker, appelez novita_gpus.start({"handler": handler}) pour démarrer la boucle de tâches. La plateforme transmet les données de tâche à handler(job) :
  • job["id"] : id du job actuel
  • job["input"] : contenu d’entrée soumis par le client
  • La valeur de retour du handler est utilisée comme sortie du job
  • Si le dict retourné contient un champ error, le job est marqué comme échoué
Exemple minimal de handler :

5. Exemples complets de workers

Pour le code source complet des workers, les instructions de build d’image Docker et les scripts de soumission de tâches, consultez les exemples Python Novita GPUs. Le dépôt inclut deux exemples :
  • comfyui-worker : exécute ComfyUI depuis handler.py et retourne les images générées.
  • sleep-worker : un handler.py minimal qui attend pendant une durée demandée et retourne un résultat JSON.
Chaque répertoire d’exemple contient :
  • handler.py : définit handler(job) et démarre le worker avec novita_gpus.start({"handler": handler}).
  • Dockerfile : construit l’image du worker.
  • requirements.txt : installe novita-gpus.
  • submit_task.py : soumet une tâche avec le SDK client novita-gpus.
Construisez et poussez votre image de worker vers votre propre registre :
La soumission de tâche utilise le format de nom d’Endpoint <endpoint-id>-<app-name>. Par exemple, l’Endpoint ID o8UJWkag5WTn et le nom d’application async produisent :
Les exemples submit_task.py acceptent l’Endpoint ID et le nom d’application séparément, puis composent le nom d’Endpoint final :
Dans le script, le client SDK est créé avec le nom d’Endpoint composé :

6. Retourner des images ou des fichiers

L’API status de l’Endpoint serverless asynchrone a une limite de taille de sortie. Pour les fichiers volumineux tels que les images et les vidéos, téléversez-les d’abord vers un stockage d’objets et retournez les URL dans la sortie. Configurez les variables d’environnement du stockage d’objets dans l’Endpoint :
Téléversez une image dans le handler :
Vous pouvez également téléverser des fichiers ordinaires ou des bytes :

7. FAQ

Dois-je configurer une API Key dans le worker ?

Généralement non. Les API Keys sont principalement utilisées par les clients pour soumettre, interroger et annuler des jobs.

Quelle valeur de retour du handler marque un job comme échoué ?

Si le handler retourne un dict qui contient un champ error, le job est marqué comme échoué :
Dernière modification le 10 août 2026