Menyetel task timeout (jobs)

Secara default, setiap tugas berjalan selama maksimum 10 menit: Anda dapat mengubahnya menjadi waktu yang lebih singkat atau waktu yang lebih lama hingga 24 jam.

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.

Dalam hal retry, setelan timeout diterapkan ke setiap percobaan memulai sebuah task. Jika percobaan memulai task tidak kunjung selesai dalam kurun waktu yang telah ditentukan, maka task akan dihentikan.

Anda dapat menentukan durasi menggunakan simbol satuan waktu; sebagai contoh, 10m5s terbaca sepuluh menit lima detik. Jika Anda tidak menentukan satuan, maka detik (s) akan dianggap sebagai satuan default. Sebagai contoh, 10 terbaca 10 detik.

Mengamati dan menangani event pemeliharaan

Tugas mungkin akan mengalami peristiwa pemeliharaan secara berkala. Selama pemeliharaan, semua task yang sedang berlangsung akan dimigrasikan ke komputer lain. Dalam proses migrasi ini seluruh status task akan tetap terjaga. Namun, dalam proses tersebut akan ada jeda singkat saat task sedang dimigrasikan.

Peristiwa pemeliharaan bersifat transparan; Anda tidak perlu membuat perubahan apa pun pada container untuk menangani peristiwa pemeliharaan. Ingat, setiap kali task diimigrasi, saat mulai dan saat selesai, Cloud Run akan mencetak pesan log.

Namun, jika ingin memantau atau menangani event pemeliharaan dengan cara tertentu, Anda dapat menangkap sinyal SIGTSTP, yang akan dikirim 10 detik sebelum task 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)
        }
    }()
 }
 

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. Jika Anda sedang mengonfigurasi tugas baru, klik tabTugas dan isi halaman setelan tugas awal seperti yang diinginkan. Jika Anda sedang mengonfigurasi tugas yang sudah ada, klik tugas tersebut, lalu klikEdit.

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

  4. Klik tab General.

    gambar

    • Tentukan durasi maksimum untuk task yang ada di job tersebut, dengan menentukan jumlah waktu dan satuannya: contohnya, 10m5s terbaca sepuluh menit lima detik.
  5. Klik Create atau Update.

Command line

  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

Download dan lihat konfigurasi job yang ada menggunakan perintah gcloud run jobs describe --format export, yang akan memberikan hasil yang dibersihkan dalam format YAML. Kemudian ubah kolom yang dijelaskan di bawah ini dan upload YAML yang telah dimodifikasi menggunakan perintah gcloud run jobs replace. Pastikan Anda hanya mengubah kolom seperti yang didokumentasikan.

  1. Untuk melihat dan mendownload konfigurasi:

    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 TIMEOUT dengan durasi maksimum untuk task, dan tenentukan jumlah waktu dan satuannya: contohnya, 10m5s terbaca sepuluh menit dan lima detik.

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

  3. Perbarui konfigurasi job yang ada:

    gcloud run jobs replace job.yaml

Terraform

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

Agar dapat menentukan task timeout untuk sebuah job Cloud Run, gunakan resource google_cloud_run_v2_job dan terapkan snippet berikut ke file main.tf Anda:

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"
      }
    }
  }
}

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.

Command line

  1. Gunakan perintah berikut:

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