Zeitlimit für Aufgaben festlegen (Jobs)

Standardmäßig wird jede Aufgabe maximal 10 Minuten lang ausgeführt. Sie können dies auf eine kürzere oder längere Zeit von bis zu 24 Stunden ändern.

Sie legen das Zeitlimit für Aufgaben wie auf dieser Seite beschrieben fest. Es gibt kein explizites Zeitlimit für die Ausführung eines Jobs: Wenn alle Aufgaben abgeschlossen sind, ist die Jobausführung abgeschlossen.

Bei Wiederholungsversuchen gilt die Zeitlimitseinstellung für jeden Versuch einer Aufgabe. Wenn der Aufgabenversuch nicht innerhalb dieser Zeit abgeschlossen ist, wird er beendet.

Die Einheiten geben eine Dauer an. Beispiel: 10m5s sind zehn Minuten und fünf Sekunden. Wenn Sie keine Einheit angeben, wird als Einheit von Sekunden ausgegangen. Beispiel: Der Wert 10 ist 10 Sekunden.

Wartungsereignisse beobachten und verarbeiten

Für Jobs können regelmäßig Wartungsereignisse durchgeführt werden. Während eines Wartungsereignisses werden alle laufenden Aufgaben von der aktuellen Maschine auf eine andere Maschine migriert. Durch diesen Migrationsprozess wird der gesamte Status der Aufgabe beibehalten. Während der Migration der Aufgabe kommt es jedoch zu einer kurzen Pause.

Wartungen sind transparent. Sie müssen keine Änderungen an Ihrem Container vornehmen, um Wartungsereignisse zu verarbeiten. Beachten Sie, dass Cloud Run jedes Mal, wenn eine Aufgabe startet und die Migration abschließt, eine Lognachricht ausgibt.

Wenn Sie jedoch Wartungsereignisse auf bestimmte Weise überwachen oder verarbeiten möchten, können Sie das Signal SIGTSTP abfangen, das 10 Sekunden vor der Migration einer Aufgabe gesendet wird. Nach der Migration empfängt die Aufgabe sofort nach dem Neustart der Aufgabe das Signal SIGCONT.

Das folgende Go-Beispiel ist eine Funktion, die diese Signale abfängt und einen Logeintrag ausgibt:

func testSignals() {
    sigs := make(chan os.Signal, 1)
    signal.Notify(sigs, syscall.SIGTSTP, syscall.SIGCONT)
    go func() {
        for  {
            sig := <-sigs
            log.Printf("Got Signal: %v", sig)
        }
    }()
 }
 

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Konfigurieren von Cloud Run-Jobs benötigen:

Eine Liste der IAM-Rollen und -Berechtigungen im Zusammenhang mit Cloud Run finden Sie unter IAM-Rollen für Cloud Run und IAM-Berechtigungen für Cloud Run. Wenn Ihr Cloud Run-Job mit Google Cloud APIs wie Cloud-Clientbibliotheken verknüpft ist, lesen Sie die Konfigurationsanleitung für Dienstidentitäten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Bereitstellungsberechtigungen und Zugriff verwalten.

Zeitlimit für Aufgaben festlegen

So geben Sie das Aufgabenzeitlimit für einen Cloud Run-Job an:

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite "Cloud Run-Jobs":

    Öffnen Sie Cloud Run.

  2. Klicken Sie auf den Tab Jobs und füllen Sie die Seite mit den anfänglichen Jobeinstellungen wie gewünscht aus, wenn Sie einen neuen Job konfigurieren. Klicken Sie auf den Job und dann auf Bearbeiten, wenn Sie einen vorhandenen Job konfigurieren.

  3. Klicken Sie auf Container, Variablen und Secrets, Verbindungen, Sicherheit, um die Seite mit den Jobattributen zu maximieren.

  4. Klicken Sie auf den Tab Allgemein.

    Image

    • Geben Sie die maximale Dauer für die Jobaufgaben im aktuellen Job an. Geben Sie dabei die Zeit und die Einheiten an. Beispiel: 10m5s ist zehn Minuten und fünf Sekunden.
  5. Klicken Sie auf Erstellen oder Aktualisieren.

Befehlszeile

  1. Für einen Job, den Sie erstellen:

    gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT

    Ersetzen

    • JOB_NAME durch den Namen des Jobs.
    • IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/job:latest.
    • TIMEOUT durch die maximale Dauer für die Jobaufgaben und die Angabe der Zeit und der Einheiten. Beispiel: 10m5s ist zehn Minuten und fünf Sekunden.
  2. Für einen Job, den Sie aktualisieren:

    gcloud run jobs update JOB_NAME --task-timeout TIMEOUT

YAML

  1. Wenn Sie einen neuen Job erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Job aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Aktualisieren Sie das Attribut timeoutSeconds::

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE
              timeoutSeconds: TIMEOUT

    Ersetzen Sie TIMEOUT durch die maximale Dauer für die Jobaufgaben und die Angabe der Zeit und der Einheiten. Beispiel: 10m5s ist zehn Minuten und fünf Sekunden.

    Sie können auch weitere Konfigurationen angeben, z. B. Umgebungsvariablen oder Speicherlimits.

  3. Aktualisieren Sie die vorhandene Jobkonfiguration:

    gcloud run jobs replace job.yaml

Terraform

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Verwenden Sie die Ressource google_cloud_run_v2_job und wenden Sie das folgende Snippet auf Ihre main.tf-Datei an, um das Aufgabenzeitlimit für einen Cloud Run-Job anzugeben:

resource "google_cloud_run_v2_job" "default" {
  name         = "cloud-run-job-timeout"
  location     = "us-central1"
  launch_stage = "BETA"

  template {
    template {
      timeout = "3.500s"

      containers {
        image = "us-docker.pkg.dev/cloudrun/container/job:latest"
      }
    }
  }
}

Einstellungen für Aufgabenzeitlimits ansehen

So rufen Sie die aktuellen Zeitlimiteinstellungen für Aufgaben für Ihren Cloud Run-Job auf:

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite "Cloud Run-Jobs":

    Zu Cloud Run-Jobs

  2. Klicken Sie auf den gewünschten Job, um die Seite Jobdetails zu öffnen.

  3. Klicken Sie auf den Tab Konfiguration.

  4. Suchen Sie in den Konfigurationsdetails nach der Einstellung für das Zeitlimit der Aufgabe.

Befehlszeile

  1. Verwenden Sie den folgenden Befehl:

    gcloud run jobs describe JOB_NAME
  2. Suchen Sie in der zurückgegebenen Konfiguration nach der Zeitlimiteinstellung der Aufgabe.