Menjadwalkan Tugas

Anda dapat menjalankan alur kerja singkat 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 terlebih dahulu mengirimkan 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. Lakukan clone pada test-app repo.

    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 dalam menjalankan Tugas, sehingga tidak ada rute yang akan dibuat di Aplikasi dan Aplikasi 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 tersebut terlebih dahulu.

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

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

Menjalankan secara manual

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

kf run-job test-job

Perintah ini menjalankan Task yang ditentukan oleh Job satu kali secara langsung.

Menjadwalkan Tugas

Untuk menjadwalkan Tugas agar dijalankan, 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. Job 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 yang dijadwalkan maupun tidak dijadwalkan, 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 dijadwalkan secara aktif 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.