novita-gpus para llamar a un Async Serverless Endpoint y cómo personalizar un handler de worker.
1. Instalar el SDK
Instala el SDK en tu entorno de cliente o en el entorno de ejecución del worker:2. Enviar trabajos con el SDK
La URL de solicitud predeterminada del SDKnovita-gpus es https://async-public.serverless.novita.ai/v1. Para llamar a un Endpoint, configura tu clave de API y crea un cliente con el nombre del Endpoint.
3. Ejemplo de trabajo de ComfyUI
Paranovitalabs/comfyui-worker:v0.0.1, la entrada del trabajo debe incluir un flujo de trabajo de ComfyUI. El siguiente ejemplo mínimo coincide con el caso probado:
4. Handler personalizado
En el lado del worker, llama anovita_gpus.start({"handler": handler}) para iniciar el bucle de tareas. La plataforma pasa los datos de la tarea a handler(job):
job["id"]: id del trabajo actualjob["input"]: contenido de entrada enviado por el cliente- El valor de retorno del handler se usa como salida del trabajo
- Si el dict devuelto contiene un campo
error, el trabajo se marca como fallido
5. Ejemplos completos de workers
Para ver el código fuente completo de workers, instrucciones para compilar imágenes Docker y scripts de envío de tareas, consulta Novita GPUs Python examples. El repositorio incluye dos ejemplos:- comfyui-worker: ejecuta ComfyUI desde
handler.pyy devuelve las imágenes generadas. - sleep-worker: un
handler.pymínimo que espera durante la duración solicitada y devuelve un resultado JSON.
handler.py: definehandler(job)e inicia el worker connovita_gpus.start({"handler": handler}).Dockerfile: compila la imagen del worker.requirements.txt: instalanovita-gpus.submit_task.py: envía una tarea con el SDK de clientenovita-gpus.
<endpoint-id>-<app-name>.
Por ejemplo, el ID de Endpoint o8UJWkag5WTn y el nombre de app async producen:
submit_task.py aceptan el ID de Endpoint y el nombre de app por separado, y luego componen el nombre final del Endpoint:
6. Devolver imágenes o archivos
La APIstatus de Async Serverless Endpoint tiene un límite de tamaño de salida. Para archivos grandes, como imágenes y videos, súbelos primero a un almacenamiento de objetos y devuelve URL en la salida.
Configura las variables de entorno del almacenamiento de objetos en el Endpoint:
7. FAQ
¿Necesito configurar una clave de API en el worker?
Normalmente no. Las claves de API se usan principalmente por los clientes para enviar, consultar y cancelar trabajos.¿Qué valor de retorno del handler marca un trabajo como fallido?
Si el handler devuelve un dict que contiene un campoerror, el trabajo se marca como fallido: