תזמון משימות

אפשר להריץ תהליכי עבודה לטווח קצר כמשימות. במאמר הפעלת Tasks מוסבר איך להפעיל את Tasks בקטע 'אפליקציות'.

אפשר גם לתזמן את המשימות להפעלה במרווחי זמן חוזרים שמוגדרים באמצעות הפורמט unix-cron. כדי לתזמן משימות, קודם מעבירים אפליקציה שמריצה את המשימה, כמו במשימה לא מתוזמנת, ואז יוצרים Job כדי לתזמן את המשימה.

אפשר להגדיר ל-Task תזמון כך שהוא יפעל כמה פעמים ביום או בימים ובחודשים ספציפיים.

העברת אפליקציה להרצת משימות מתוזמנות

  1. משכפלים את מאגר האפליקציה לבדיקה:

    git clone https://github.com/cloudfoundry-samples/test-app test-app
    cd test-app
  2. דחיפה של האפליקציה.

    מבצעים Push של האפליקציה באמצעות הפקודה kf push APP_NAME --task. הדגל --task מציין שהאפליקציה מיועדת להרצת משימות, ולכן לא ייווצרו מסלולים באפליקציה והיא לא תופעל כאפליקציה לטווח ארוך.

    kf push test-app --task
  3. כדי לוודא שלא נוצרו מופעים או מסלולים של האפליקציה, מריצים את הפקודה הבאה:

    kf apps

    שימו לב שהאפליקציה לא מופעלת ואין לה כתובות URL:

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

יצירת משרה

כדי להריץ משימה לפי לוח זמנים, קודם צריך ליצור Job שמתאר את המשימה:

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

המשימה מתחילה בהשהיה או ללא תזמון, ולא יוצרת מטלות עד שkf run-job מפעיל אותה באופן ידני או שkf schedule-task מתזמן אותה.

הפעלת משימה באופן ידני

אפשר להריץ משימות אד-הוק, בדומה להרצת משימות באמצעות kf run-task. האפשרות הזו יכולה להיות שימושית לבדיקת העבודה לפני שתזמנו אותה או תפעילו אותה לפי הצורך, בנוסף לתזמון.

kf run-job test-job

הפקודה הזו מריצה את המשימה שהוגדרה על ידי העבודה פעם אחת באופן מיידי.

תזמון משימה

כדי לתזמן את הפעלת ה-Job, צריך לספק תזמון unix-cron בפקודה kf schedule-job:

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

הפקודה הזו מפעילה את העבודה ליצירת משימות באופן אוטומטי לפי לוח הזמנים שצוין. בדוגמה הזו, משימה מופעלת כל דקה.

כדי לעדכן את לוח הזמנים של משימה, מריצים את הפקודה kf schedule-task עם לוח זמנים חדש. למשימות ב-Kf יכול להיות רק תזמון cron אחד. ההבדל הוא שבכלי לתזמון של PCF אפשר לתזמן כמה לוחות זמנים למשימה אחת. אם אתם צריכים כמה תזמונים של cron, תוכלו להגדיר אותם באמצעות כמה משימות.

ניהול משרות ולוחות זמנים

כדי לראות את כל המשרות, מתוזמנות ולא מתוזמנות, במרחב הנוכחי, משתמשים בפקודה 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>

בנוסף, אפשר להציג רק משימות שמתוזמנות באופן פעיל באמצעות הפקודה 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>

שימו לב שהערך unscheduled-job לא מופיע בפלט kf job-schedules.

ביטול לוח זמנים של משימה

כדי לעצור משימה מתוזמנת, משתמשים בפקודה kf delete-job-schedule:

kf delete-job-schedule test-job

הפקודה הזו משעה את העבודה ומפסיקה את יצירת המשימות לפי התזמון הקודם. העבודה לא נמחקת ואפשר לתזמן אותה מחדש על ידי kf schedule-job כדי להמשיך בהרצה.

מחיקת משרה

אפשר למחוק את כל המשימה באמצעות הפקודה kf delete-job:

kf delete-job test-job

הפקודה הזו מוחקת את העבודה ואת כל המשימות שנוצרו על ידי העבודה, גם משימות מתוזמנות וגם משימות שהופעלו באופן ידני. אם יש משימות שעדיין פועלות, הפקודה הזו תמחק אותן בכוח.

אם רוצים לוודא שהמשימות הפעילות לא יופרעו, צריך קודם למחוק את לוח הזמנים של העבודות באמצעות kf delete-job-schedule, לחכות עד שכל המשימות יושלמו ואז למחוק את העבודה באמצעות קריאה ל-kf delete-job.