novita-gpus SDK verwenden, um einen Async Serverless Endpoint aufzurufen, und wie Sie einen Worker-Handler anpassen.
1. SDK installieren
Installieren Sie das SDK in Ihrer Client-Umgebung oder Worker-Laufzeitumgebung:2. Jobs mit dem SDK übermitteln
Die Standard-Anfrage-URL desnovita-gpus SDK ist https://async-public.serverless.novita.ai/v1. Um einen Endpoint aufzurufen, legen Sie Ihren API-Schlüssel fest und erstellen Sie einen Client mit dem Endpoint-Namen.
3. ComfyUI-Jobbeispiel
Fürnovitalabs/comfyui-worker:v0.0.1 muss die Job-Eingabe einen ComfyUI-Workflow enthalten. Das folgende minimale Beispiel entspricht dem getesteten Fall:
4. Benutzerdefinierter Handler
Rufen Sie auf der Worker-Seitenovita_gpus.start({"handler": handler}) auf, um die Task-Schleife zu starten. Die Plattform übergibt Task-Daten an handler(job):
job["id"]: aktuelle Job-IDjob["input"]: vom Client übermittelter Eingabeinhalt- Der Rückgabewert des Handlers wird als Job-Ausgabe verwendet
- Wenn das zurückgegebene dict ein
error-Feld enthält, wird der Job als fehlgeschlagen markiert
5. Vollständige Worker-Beispiele
Vollständigen Worker-Quellcode, Anweisungen zum Erstellen von Docker-Images und Skripte zur Task-Übermittlung finden Sie in den Novita GPUs Python-Beispielen. Das Repository enthält zwei Beispiele:- comfyui-worker: führt ComfyUI aus
handler.pyaus und gibt generierte Bilder zurück. - sleep-worker: ein minimales
handler.py, das für eine angeforderte Dauer wartet und ein JSON-Ergebnis zurückgibt.
handler.py: definierthandler(job)und startet den Worker mitnovita_gpus.start({"handler": handler}).Dockerfile: erstellt das Worker-Image.requirements.txt: installiertnovita-gpus.submit_task.py: übermittelt eine Task mit demnovita-gpusClient-SDK.
<endpoint-id>-<app-name>.
Beispielsweise ergeben Endpoint-ID o8UJWkag5WTn und App-Name async Folgendes:
submit_task.py-Beispiele akzeptieren die Endpoint-ID und den App-Namen separat und setzen dann den endgültigen Endpoint-Namen zusammen:
6. Bilder oder Dateien zurückgeben
Die Async Serverless Endpointstatus API hat eine Größenbeschränkung für Ausgaben. Laden Sie große Dateien wie Bilder und Videos zuerst in einen Objektspeicher hoch und geben Sie URLs in der Ausgabe zurück.
Konfigurieren Sie Umgebungsvariablen für den Objektspeicher im Endpoint:
7. FAQ
Muss ich im Worker einen API-Schlüssel konfigurieren?
Normalerweise nicht. API-Schlüssel werden hauptsächlich von Clients verwendet, um Jobs zu übermitteln, abzufragen und abzubrechen.Welcher Handler-Rückgabewert markiert einen Job als fehlgeschlagen?
Wenn der Handler ein dict zurückgibt, das einerror-Feld enthält, wird der Job als fehlgeschlagen markiert: