Jobdienste in einer App erstellen und verwalten¶
Unter diesem Thema wird beschrieben, wie Sie Jobdienste in einer Snowflake Native App with Snowpark Container Services erstellen und verwalten. Informationen zur Verwendung von langlaufenden Diensten in einer App finden Sie unter Jobdienste in einer App erstellen und verwalten.
Eine Snowflake Native App with Snowpark Container Services kann einen Snowpark Container Services-Jobdienst ausführen.
Ein mit CREATE SERVICE erstellter Dienst ist langlaufend. Eine App muss den Dienst explizit beenden, wenn er nicht mehr benötigt wird. Im Gegensatz dazu ist ein mit EXECUTE JOB SERVICE erstellter Jobdienst ein Dienst, der beendet wird, wenn der Code des Dienstes beendet wird, ähnlich wie eine gespeicherte Prozedur. Wenn alle Container beendet werden, ist auch der Job beendet.
Jobdienste werden synchron ausgeführt. Der Befehl EXECUTE JOB SERVICE wird abgeschlossen, nachdem alle Container beendet wurden.
Jobdienst in einer App ausführen¶
Um einen Jobdienst in einer App auszuführen, fügen Sie den Befehl EXECUTE JOB SERVICE zum Setup-Skript hinzu.
Das folgende Beispiel zeigt, wie Sie einen Jobdienst im Kontext einer Snowflake Native App with Snowpark Container Services ausführen:
EXECUTE JOB SERVICE
IN COMPUTE POOL consumer_compute_pool
FROM SPECIFICATION_FILE = 'job_service.yml'
NAME = 'services_schema.job_service'
GRANT MONITOR ON SERVICE services.job_service TO APPLICATION ROLE app_public;
Bemerkung
Beachten Sie, dass die Befehlsparameter in der in diesem Beispiel gezeigten Reihenfolge angegeben werden müssen.
Wenn der Befehl EXECUTE JOB SERVICE aus dem Setup-Skript aufgerufen wird, erstellt er einen Job in einem Computepool im Verbraucherkonto.
Beim manuellen Erstellen des Computepools muss der Verbraucher der App die Berechtigung USAGE für den Computepool erteilen, damit dieser Befehl erfolgreich ist. Daher müssen Anbieter eine Logik in eine gespeicherte Prozedur aufnehmen, die prüft, ob die richtigen Berechtigungen erteilt wurden, bevor sie EXECUTE JOB SERVICE ausführen.
Die Klausel FROM SPECIFICATION_FILE =
gibt den relativen Pfad zu der Dienstspezifikationsdatei in einem Stagingbereich an. Weitere Informationen dazu finden Sie unter Dienstspezifikationsdatei erstellen.
Die Klausel NAME =
gibt den Bezeichner für den Jobdienst an. Der Name dieses Jobdienstes muss innerhalb des Schemas, in dem er sich befindet, eindeutig sein.
Bemerkung
Jobdienste können nicht innerhalb eines Versionsschemas ausgeführt werden.
Die Klausel NAME =
sollte das Schema und den Namen des Jobs innerhalb der Anwendung verwenden. Beispiel: services_schema.job_service
. Wenn der Schemaname nicht angegeben wird, wird der Jobdienst im Schema der gespeicherten Prozedur oder Funktion erstellt, die den Jobdienst ausführt.
Jobdienst in einer App überwachen¶
Um den Status eines Jobdienstes innerhalb einer App zu überwachen, verwenden Sie den Befehl SYSTEM$GET_SERVICE_STATUS – Veraltet wie im folgenden Beispiel gezeigt:
CALL SYSTEM$GET_SERVICE_STATUS('schema.job_name')
Diese Systemfunktion gibt ein JSON-Objekt zurück, das Informationen zu dem angegebenen Jobdienst innerhalb der App enthält. Anbieter können diese Systemfunktion aus der App heraus aufrufen, um festzustellen, ob die Dienste gestartet oder fehlgeschlagen sind.
Verbraucher können diese Systemfunktion auch aufrufen, um den Status eines Dienstes zu ermitteln. Dies setzt voraus, dass die Anbieter einer Anwendungsrolle die Berechtigung MONITOR für den Dienst zuweisen. Weitere Informationen dazu finden Sie unter Jobdienst in einer App ausführen.
Zugriff auf lokale Containerprotokolle¶
Um die Systemprotokolle für einen Jobdienst innerhalb einer App zu erhalten, verwenden Sie die Systemfunktion SYSTEM$GET_SERVICE_LOGS wie im folgenden Beispiel gezeigt:
CALL SYSTEM$GET_SERVICE_LOGS('schema.job_name', 'instance_id', 'container_name'[, 10])
Anbieter können diese Systemfunktion aus einer App heraus aufrufen. In diesem Zusammenhang muss der Anbieter app_name
nicht als Teil des vollqualifizierten Jobnamens angeben.
Verbraucher können auch diesen Systembefehl ausführen. Dies setzt voraus, dass die Anbieter einer Anwendungsrolle die Berechtigung MONITOR für den Dienst zuweisen. Weitere Informationen dazu finden Sie unter Jobdienst in einer App ausführen.