Menyetel task timeout (jobs)

Secara default, setiap tugas berjalan selama maksimum 10 menit: Anda dapat mengubahnya menjadi lebih singkat atau lebih lama hingga 168 jam (7 hari). Dukungan untuk waktu tunggu lebih dari 24 jam tersedia di Pratinjau.

Anda akan mengatur task timeout seperti yang dijelaskan di halaman ini. Tidak ada timeout eksplisit pada eksekusi job: jika semua task selesai, maka eksekusi job juga akan selesai.

Unit menentukan durasi. Anda dapat menentukan durasi waktu tunggu sebagai nilai bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menetapkan durasi waktu tunggu sebagai 10 menit dan 5 detik, tentukan nilainya sebagai 605 detik.

Jika tugas Anda mengaktifkan percobaan ulang, setelan waktu tunggu akan diterapkan ke setiap percobaan memulai sebuah tugas. Jika percobaan memulai task tidak kunjung selesai dalam kurun waktu yang telah ditentukan, maka task akan dihentikan. Makin lama tugas berjalan, makin besar kemungkinannya untuk mengalami masalah yang menyebabkan kegagalan, seperti kegagalan dependensi downstream, error kehabisan memori, atau masalah infrastruktur. Sebaiknya aktifkan percobaan ulang untuk semua tugas, tetapi terutama untuk tugas yang berjalan lama.

Peristiwa pemeliharaan

Tugas akan mengalami peristiwa pemeliharaan secara berkala. Selama pemeliharaan, semua tugas yang sedang berlangsung akan dimigrasikan dari komputer saat ini ke komputer lain. Ada jeda singkat dalam pemrosesan saat tugas dimigrasikan.

Proses migrasi mempertahankan status tugas, dengan satu pengecualian yang penting: koneksi jaringan VPC keluar terputus selama peristiwa pemeliharaan. Sebaiknya gunakan library klien yang dapat menangani reset koneksi sesekali.

Cloud Run akan mencetak pesan log setiap kali tugas dimulai dan selesai dimigrasikan.

Selain itu, jika ingin memantau atau menangani peristiwa pemeliharaan dengan cara tertentu, Anda dapat menangkap sinyal SIGTSTP, yang akan dikirim 10 detik sebelum tugas dimigrasikan. Setelah proses migrasi, task akan menerima sinyal SIGCONT segera setelah task tersebut dimulai ulang.

Berikut adalah contoh fungsi dalam bahasa GO yang akan menangkap sinyal tersebut dan mencetak entri log:

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)
        }
    }()
 }
 

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna mengonfigurasi tugas Cloud Run, minta administrator Anda untuk memberi Anda peran IAM berikut:

Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat peran IAM Cloud Run dan izin IAM Cloud Run. Jika tugas Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.

Menyetel task timeout

Untuk menentukan task timeout pada sebuah job Cloud Run:

Konsol

  1. Pada konsol Google Cloud, buka halaman tugas Cloud Run:

    Buka Cloud Run

  2. Klik Deploy container dan pilih Job untuk mengisi halaman setelan tugas awal. Jika Anda mengonfigurasi tugas yang sudah ada, pilih tugas, lalu klik Edit.

  3. Klik Container, variabel dan secret, koneksi, keamanan untuk memperluas halaman properti tugas.

  4. Klik tab General.

    gambar

    • Di kolom Task timeout, tentukan durasi maksimum untuk tugas dalam job saat ini, lalu pilih Time unit. Anda hanya dapat menentukan durasi waktu tunggu sebagai nilai bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menetapkan durasi 10 menit dan 5 detik, di kolom Task timeout, tentukan 605, dan pilih Time unit sebagai second.
  5. Klik Buat atau Perbarui.

gcloud

  1. Untuk job yang Anda buat:

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

    Ganti

    • JOB_NAME dengan nama tugas Anda.
    • IMAGE_URL dengan referensi ke container image, contohnya, us-docker.pkg.dev/cloudrun/container/job:latest.
    • TIMEOUT dengan durasi maksimum untuk task, tentukan jumlah waktu dan satuannya: contohnya, 10m5s terbaca sepuluh menit dan lima detik.
  2. Untuk job yang akan Anda perbarui:

    gcloud run jobs update JOB_NAME --task-timeout TIMEOUT

YAML

  1. Jika Anda membuat tugas baru, lewati langkah ini. Jika Anda mengupdate tugas yang ada, download konfigurasi YAML-nya:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Perbarui atribut timeoutSeconds::

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

    Ganti:

    • JOB_NAME dengan nama tugas Anda.
    • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/job:latest.
    • TIMEOUT dengan durasi maksimum untuk tugas, tentukan jumlah waktu dan satuannya. Anda hanya dapat menentukan waktu sebagai nilai bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menetapkan durasi 10 menit dan 5 detik, tentukan 605s.

    Anda juga dapat menentukan detail konfigurasi lainnya, seperti variabel lingkungan atau batas memori.

  3. Perbarui konfigurasi tugas yang ada:

    gcloud run jobs replace job.yaml

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Untuk menentukan waktu tunggu tugas untuk tugas Cloud Run, gunakan resource google_cloud_run_v2_job dan terapkan cuplikan berikut ke file main.tf Anda:

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

  deletion_protection = false # set to "true" in production

  template {
    template {
      timeout = "3.500s"

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

Menampilkan setelan task timeout

Untuk melihat setelan task timeout saat ini dari job Cloud Run Anda:

Konsol

  1. Pada konsol Google Cloud, buka halaman tugas Cloud Run.

    Buka tugas Cloud Run

  2. Klik tugas yang Anda minati untuk membuka halaman Detail pekerjaan.

  3. Klik tab Configuration.

  4. Temukan setelan task timeout di detail konfigurasi.

gcloud

  1. Gunakan perintah berikut:

    gcloud run jobs describe JOB_NAME
  2. Temukan setelan task timeout dalam konfigurasi yang ditampilkan.

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

source "https://rubygems.org"

gem "functions_framework", "~> 1.4"