Menjadwalkan Tugas

Anda dapat menjalankan alur kerja berumur pendek dengan menjalankannya sebagai Tasks. Running Tasks menjelaskan cara menjalankan Tasks di bagian Apps.

Anda juga dapat menjadwalkan Tasks untuk dijalankan pada interval berulang yang ditentukan menggunakan format unix-cron. Dengan Tugas terjadwal, pertama-tama Anda mengirim Aplikasi yang menjalankan Tugas seperti yang Anda lakukan dengan Tugas yang tidak terjadwal, lalu membuat Tugas untuk menjadwalkan Tugas tersebut.

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

Mengirim Aplikasi untuk menjalankan Tasks terjadwal

  1. Buat clone untuk repo aplikasi pengujian.

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

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

    kf push test-app --task
  3. Konfirmasi bahwa 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 Pekerjaan

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

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

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

Berjalan secara manual

Tugas dapat dijalankan secara ad hoc seperti menjalankan Tasks oleh kf run-task. Opsi ini dapat berguna untuk menguji Tugas sebelum menjadwalkan atau berjalan sesuai kebutuhan selain jadwal.

kf run-job test-job

Perintah ini menjalankan Tugas yang ditentukan oleh Tugas satu kali dengan segera.

Menjadwalkan Pekerjaan

Guna 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 otomatis membuat Tugas pada jadwal yang ditentukan. Dalam contoh ini, Tugas berjalan setiap menit.

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

Mengelola Pekerjaan dan Jadwal

Lihat semua Tugas, baik yang dijadwalkan maupun yang 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 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 Pekerjaan

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 ini tidak dihapus dan dapat dijadwalkan lagi oleh kf schedule-job untuk melanjutkan eksekusi.

Menghapus Pekerjaan

Seluruh Tugas dapat dihapus dengan perintah kf delete-job.

kf delete-job test-job

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

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