Menjadwalkan Tugas

Anda dapat menjalankan alur kerja berumur pendek dengan menjalankannya sebagai Tugas. Menjalankan Tugas menjelaskan cara menjalankan Tugas di bagian Aplikasi.

Anda juga dapat menjadwalkan Tugas untuk berjalan pada interval berulang yang ditentukan menggunakan format unix-cron. Dengan Tugas terjadwal, Anda harus terlebih dahulu mendorong Aplikasi yang menjalankan Tugas seperti yang Anda lakukan dengan Tugas yang tidak terjadwal, lalu membuat Tugas untuk menjadwalkan Tugas.

Anda dapat menentukan jadwal agar Tugas berjalan beberapa kali sehari atau pada hari dan bulan tertentu.

Mendorong Aplikasi untuk menjalankan Tugas terjadwal

  1. Clone repo aplikasi pengujian:

    git clone https://github.com/cloudfoundry-samples/test-app test-app
    cd test-app
  2. Kirim Aplikasi.

    Kirim Aplikasi dengan perintah kf push APP_NAME --task. Flag --task menunjukkan bahwa Aplikasi dimaksudkan untuk digunakan untuk menjalankan Tugas, sehingga tidak ada rute yang akan dibuat di Aplikasi dan tidak akan di-deploy sebagai aplikasi yang berjalan lama.

    kf push test-app --task
  3. Pastikan tidak ada instance atau rute Aplikasi yang dibuat dengan mencantumkan Aplikasi:

    kf apps

    Perhatikan bahwa Aplikasi tidak dimulai dan tidak memiliki URL:

    Listing Apps in Space: test-space
    Name                     Instances  Memory  Disk  CPU   URLs
    test-app                 stopped    1Gi     1Gi   100m  <nil>
    

Membuat Tugas

Untuk menjalankan Tugas sesuai jadwal, Anda harus membuat Tugas yang menjelaskan Tugas terlebih dahulu:

kf create-job test-app test-job "printenv"

Tugas mulai ditangguhkan atau tidak dijadwalkan, dan tidak membuat Tugas hingga dijalankan secara manual oleh kf run-job atau dijadwalkan oleh kf schedule-task.

Menjalankan Tugas secara manual

Tugas dapat dijalankan secara ad hoc mirip dengan menjalankan Tugas oleh kf run-task. Opsi ini dapat berguna untuk menguji Tugas sebelum menjadwalkan atau menjalankannya sesuai kebutuhan selain menjadwalkan.

kf run-job test-job

Perintah ini langsung menjalankan Tugas yang ditentukan oleh Tugas satu kali.

Menjadwalkan Tugas

Untuk menjadwalkan Tugas untuk dieksekusi, Anda harus memberikan jadwal unix-cron dalam perintah kf schedule-job:

kf schedule-job test-job "* * * * *"

Perintah ini memicu Tugas untuk membuat Tugas secara otomatis sesuai jadwal yang ditentukan. Dalam contoh ini, Tugas berjalan setiap menit.

Anda dapat memperbarui jadwal Tugas dengan menjalankan kf schedule-task dengan jadwal baru. Tugas di Kf hanya dapat memiliki satu jadwal cron. Hal ini berbeda dengan PCF Scheduler, yang memungkinkan beberapa jadwal untuk satu Tugas. Jika memerlukan beberapa jadwal cron, Anda dapat melakukannya dengan beberapa Tugas.

Mengelola Tugas dan jadwal

Lihat semua Tugas, baik terjadwal maupun tidak terjadwal, di Ruang saat ini menggunakan perintah kf jobs:

$ kf jobs
Listing Jobs in Space: test space
Name               Schedule    Suspend  LastSchedule  Age  Ready  Reason
test-job           * * * * *   <nil>    16s           2m   True   <nil>
unscheduled-job    0 0 30 2 *  true     16s           2m   True   <nil>

Selain itu, Anda hanya dapat melihat Tugas yang secara aktif dijadwalkan dengan perintah kf job-schedules.

$ kf job-schedules
Listing job schedules in Space: test space
Name           Schedule   Suspend  LastSchedule  Age  Ready  Reason
test-job       * * * * *  <nil>    16s           2m   True   <nil>

Perhatikan bahwa unscheduled-job tidak tercantum dalam output kf job-schedules.

Membatalkan jadwal Tugas

Anda dapat menghentikan Tugas terjadwal dengan perintah kf delete-job-schedule:

kf delete-job-schedule test-job

Perintah ini menangguhkan Tugas dan menghentikannya membuat Tugas pada jadwal sebelumnya. Tugas tidak dihapus dan dapat dijadwalkan lagi oleh kf schedule-job untuk melanjutkan eksekusi.

Menghapus Tugas

Seluruh Tugas dapat dihapus dengan perintah kf delete-job:

kf delete-job test-job

Perintah ini menghapus Tugas dan semua Tugas yang dibuat oleh Tugas, baik eksekusi terjadwal maupun manual. Jika ada Tugas yang masih berjalan, perintah ini akan menghapusnya secara paksa.

Jika Anda ingin memastikan bahwa Tugas yang sedang berjalan tidak terganggu, hapus terlebih dahulu jadwal Tugas dengan kf delete-job-schedule, tunggu hingga semua Tugas selesai, lalu hapus tugas dengan memanggil kf delete-job.