ניהול משימות cron

יעד Pub/Sub

אם בוחרים את סוג היעד Pub/Sub:

  1. מציינים את שם הנושא שבו העבודה תפורסם. זהו נושא ב-Pub/Sub שכבר הגדרתם בפרויקט.

  2. מציינים את ההודעה שתישלח לנושא. הערך הזה נשלח כפרמטר data בהודעת Pub/Sub. דוגמה לכך מופיעה במדריך למתחילים.

  3. מוסיפים את מאפייני ההודעה שרוצים.

  4. מגדירים הגדרות נוספות באמצעות הקטע Configure optional settings.

‫Cloud Scheduler יפרסם הודעות בנושא הזה כחשבון שירות של Google APIs.

יעד HTTP ב-App Engine

אם בוחרים בסוג היעד App Engine HTTP, צריך להשתמש באפליקציית App Engine ובאזור שמשויך לפרויקט הנוכחי. אם רוצים להשתמש באפליקציית App Engine אחרת מחוץ לפרויקט הנוכחי, צריך לבחור באפשרות HTTP כיעד, ולא באפשרות App Engine HTTP. כללי חומת האש של היעד צריכים לאפשר בקשות מטווח כתובות ה-IP‏ 0.1.0.2/32.

מגדירים את הטופס באופן הבא:

  1. ברשימה Target type, בוחרים באפשרות App Engine HTTP.

  2. מציינים את השם של שירות App Engine שמריץ את ה-handler של משימת Cloud Scheduler. אם משמיטים את הארגומנט, הפונקציה פועלת בהנחה שמדובר בשירות default. אם רוצים להגדיר את זה, אפשר למצוא את שמות השירותים במסוףGoogle Cloud .

  3. אפשר גם לציין את הגרסה. אם לא מגדירים את הערך הזה, המערכת משתמשת בגרסה שמוצגת כרגע. אפשר לראות את הגרסאות הזמינות במסוףGoogle Cloud .

  4. אפשר גם לציין את המופע. אם לא מגדירים את המדיניות, אפשר להשתמש בכל מכונה זמינה. אפשר לראות את הגרסאות הזמינות במסוףGoogle Cloud .

  5. מציינים את כתובת ה-URL היחסית של נקודת הקצה של App Engine שאליה העבודה תיצור קשר. אם משתמשים בערך ברירת המחדל /, העבודה תשתמש בערך PROJECT-ID.appspot.com, כאשר PROJECT-ID הוא מזהה הפרויקט הנוכחי.

  6. מגדירים את שיטת ה-HTTP שרוצים להשתמש בה כשהעבודה מופעלת. ערך ברירת המחדל הוא POST.

  7. מוסיפים את הכותרות שצריך לבקשה.

  8. אפשר גם לציין את נתוני הגוף שיישלחו ליעד. הנתונים האלה נשלחים בגוף הבקשה כבייטים כשבוחרים בשיטת HTTP‏ POST או PUT.

נקודות קצה של App Engine שמיועדות לטירגוט צריכות להיות באותו פרויקט, ואפשר לאבטח אותן באמצעות login: admin ברכיב handlers בקובץ app.yaml.

יעד HTTP

אם בוחרים בסוג היעד HTTP:

  1. מציינים את כתובת ה-URL המוגדרת במלואה של נקודת הקצה שאליה העבודה תתחבר.

  2. מציינים את ה-method של ה-HTTP. ערך ברירת המחדל הוא POST.

  3. אפשר גם לציין את הנתונים שיישלחו ליעד. הנתונים האלה נשלחים בגוף הבקשה כבייטים כשבוחרים בשיטת HTTP ‏POST או PUT.

  4. מוסיפים את הכותרות שרוצים.

  5. כדי ליצור משימת HTTP Target שדורשת אימות, ראו שימוש באימות עם HTTP Target.

נקודות קצה (endpoints) של HTTP שמטרגטים אותן צריכות להיות נגישות לכולם.

אפשר להשתמש ב-Cloud Scheduler כדי להגדיר יחידות עבודה מתוזמנות, שנקראות משימות cron, שנשלחות אל יעדים בלוח זמנים חוזר, שנקרא גם מרווח או תדירות המשימה.

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

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

‫Cloud Scheduler מיועד למשימות חוזרות. אם אתם צריכים להריץ משימה רק פעם אחת, כדאי להשתמש ב-Cloud Tasks, שמאפשר לתזמן משימה עד 30 ימים מראש.

לפני שמתחילים

מוודאים שהגדרתם את הסביבה ל-Cloud Scheduler.

בחירת סוג יעד

‫Cloud Scheduler יכול להפעיל את סוגי היעדים הבאים:

הפעלת שירותי יעד שמוגבלים לכניסה פנימית

אפשר להפעיל את השירותים הבאים באופן פנימי באמצעות Cloud Scheduler:

  • פונקציות Cloud Run
  • ‫Cloud Run (בכתובת ה-URL‏ run.app, לא בדומיינים מותאמים אישית)

כדי להפעיל את יעדי ה-Cloud Scheduler האלה באופן פנימי, היעד צריך להיות באותוGoogle Cloud פרויקט או באותו היקף של VPC Service Controls כמו משימת Cloud Scheduler.

מידע נוסף על אבטחת יעדים באמצעות הגבלת תעבורת הכניסה זמין במאמרים הגבלת תעבורת כניסה (ל-Cloud Run) והגדרת הגדרות רשת (לפונקציות של Cloud Run).

יצירת משרה

אפשר ליצור עבודה באמצעות מסוף Google Cloud או Google Cloud CLI.

המסוף

  1. נכנסים לדף Cloud Scheduler במסוף Google Cloud .

    כניסה ל-Cloud Scheduler

  2. לוחצים על Create job (יצירת משימה).

  3. בשדה Name, מזינים שם לעבודה שיהיה ייחודי לפרויקט.

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

  4. ברשימה Region, בוחרים אזור.

    אם משתמשים ביעד HTTP של App Engine, צריך לבחור את אותו אזור כמו אפליקציית App Engine. מידע נוסף זמין במאמר אזורים נתמכים לפי יעד.

  5. אפשר גם להוסיף תיאור קצר של העבודה, למשל תזכורת לגבי מה שהעבודה עושה.

    התיאור הזה מופיע במסוף לצד שם המשימה.

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

    לדוגמה, המחרוזת 0 1 * * 0 מריצה את העבודה פעם בשבוע בשעה 1:00 בכל יום ראשון בבוקר. המחרוזת שאתם מציינים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.

  7. ברשימה Timezone, בוחרים את אזור הזמן שבו רוצים להשתמש לתזמון העבודה.

  8. לוחצים על Continue.

  9. מציינים את סוג היעד:

    • HTTP

    • Pub/Sub: צריך לציין את השם של נושא Pub/Sub שכבר הגדרתם בפרויקט ושעליו העבודה תתפרסם.

    • App Engine HTTP: צריך להשתמש באפליקציית App Engine ובאזור שמשויך לפרויקט הנוכחי.

  10. לוחצים על Continue.

  11. אופציונלי: כדי להגדיר התנהגות של ניסיון חוזר, לוחצים על הגדרת הגדרות אופציונליות. כדי לציין משך זמן, משתמשים ברצף של מספרים שלמים עשרוניים לא שליליים עם סיומות היחידות הבאות:

    • h - hour
    • m – minute (דקה)
    • s – שנייה
    • ‫ms – אלפית שנייה
    • us - microsecond
    • ns - nanosecond

    אסור להשתמש בערכים שליליים או בשברים. השדה Max retry duration תומך רק בערכים h,‏ m ו-s. גם Min backoff duration וגם Max backoff duration תומכים בכל הסט.

  12. אופציונלית, ליעדי HTTP ו-App Engine HTTP, מגדירים תאריך יעד לניסיונות של משימות. אם המטפל בבקשה לא מגיב עד למועד האחרון הזה, הבקשה מבוטלת והניסיון מסומן כנכשל. ‫Cloud Scheduler מנסה שוב להריץ את המשימה בהתאם להגדרת הניסיון החוזר.

  13. כדי ליצור ולשמור את העבודה, לוחצים על יצירה.

    העבודה תופעל עכשיו בתדירות שצוינה.

gcloud

כשיוצרים עבודה באמצעות ה-CLI של gcloud, משתמשים בפקודות שונות לכל סוג יעד:

HTTP

אפשר לשלוח בקשה לכל נקודת קצה של HTTP או HTTPS. נקודות קצה מטורגטות של HTTP צריכות להיות נגישות לכולם.

gcloud scheduler jobs create http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

מחליפים את מה שכתוב בשדות הבאים:

  • JOB: שם המשימה שחייב להיות ייחודי בפרויקט. שימו לב: אי אפשר להשתמש שוב בשם של משימה בפרויקט, גם אם מוחקים את המשימה המשויכת.

  • LOCATION: המיקום שבו תופעל המשימה.

  • SCHEDULE: התדירות או המרווח בין הפעלות של העבודה. לדוגמה: every 3 hours. המחרוזת שאתם מספקים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. אנחנו כבר לא ממליצים להשתמש בתחביר cron מדור קודם של App Engine, אבל הוא עדיין נתמך במשימות קיימות.

    מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.

  • URI: ה-URI המוגדר במלואו של נקודת הקצה שהעבודה תיצור איתה קשר.

פרמטרים אחרים מתוארים במדריך העזר לשורת הפקודה של gcloud:

  • אפשר גם לציין את שיטת ה-HTTP. ערך ברירת המחדל הוא POST.

  • אפשר גם לציין את הנתונים שיישלחו ליעד. הנתונים האלה נשלחים בגוף הבקשה כבייטים כשבוחרים בשיטת ה-HTTP‏ POST או PUT.

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

  • כדי ליצור משימת HTTP Target שדורשת אימות, ראו שימוש באימות עם HTTP Target.

דוגמה

gcloud scheduler jobs create http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

חובה להשתמש בנושא Pub/Sub שכבר הגדרתם בפרויקט. ‫Cloud Scheduler יפרסם הודעות בנושא הזה כחשבון שירות של Google API.

gcloud scheduler jobs create pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

מחליפים את מה שכתוב בשדות הבאים:

  • JOB: שם המשימה שחייב להיות ייחודי בפרויקט. שימו לב: אי אפשר להשתמש שוב בשם של משימה בפרויקט, גם אם מוחקים את המשימה המשויכת.

  • LOCATION: המיקום שבו תופעל המשימה.

  • SCHEDULE: התדירות או המרווח בין הפעלות של העבודה. לדוגמה: every 3 hours. המחרוזת שאתם מציינים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. אנחנו כבר לא ממליצים להשתמש בתחביר cron מדור קודם של App Engine, אבל הוא עדיין נתמך במשימות קיימות.

    מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.

  • TOPIC: השם של הנושא שהמשימה תפרסם בו. משתמשים בדגל --message-body או --message-body-from-file כדי לציין הודעה לשליחה לנושא. הערך הזה נשלח כפרמטר data בהודעת Pub/Sub. דוגמה לכך מופיעה במדריך למתחילים.

פרמטרים אחרים מתוארים במדריך העזר לשורת הפקודה של gcloud.

דוגמה

gcloud scheduler jobs create pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic \
    --message-body "Hello"

App Engine HTTP

יעד App Engine HTTP זמין רק לאפליקציית App Engine שמשויכת לפרויקט הנוכחי. אם רוצים להשתמש באפליקציית App Engine אחרת מחוץ לפרויקט הנוכחי, בוחרים באפשרות HTTP כיעד, ולא באפשרות App Engine HTTP. כללי חומת האש של היעד צריכים לאפשר בקשות מטווח כתובות ה-IP‏ 0.1.0.2/32.

אפשר לאבטח נקודות קצה של App Engine באמצעות login: admin ברכיב handlers בקובץ app.yaml.

gcloud scheduler jobs create app-engine \
    --JOB=JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

מחליפים את מה שכתוב בשדות הבאים:

  • JOB: שם המשימה שחייב להיות ייחודי בפרויקט. שימו לב: אי אפשר להשתמש שוב בשם של משימה בפרויקט, גם אם מוחקים את המשימה המשויכת.

  • LOCATION: המיקום שבו תופעל המשימה. המיקום הזה צריך להיות זהה למיקום של אפליקציית App Engine.

  • SCHEDULE: התדירות או המרווח בין הפעלות של המשימה, למשל every 3 hours. המחרוזת שאתם מציינים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. אנחנו כבר לא ממליצים להשתמש בתחביר cron מדור קודם של App Engine, אבל הוא עדיין נתמך במשימות קיימות.

    מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.

פרמטרים אחרים מתוארים במדריך העזר לשורת הפקודה של gcloud:

  • מציינים את כתובת ה-URL היחסית של נקודת הקצה (endpoint) ב-App Engine שאליה העבודה תיצור קשר. אם משתמשים בערך ברירת המחדל /, העבודה תשתמש בערך PROJECT-ID.appspot.com, כאשר PROJECT-ID הוא מזהה הפרויקט הנוכחי.

  • מציינים את השם של שירות App Engine שמריץ את ה-handler של משימת Cloud Scheduler. אם משמיטים את הארגומנט, הפונקציה פועלת בהנחה שמדובר בשירות default. אם רוצים להגדיר את זה, אפשר למצוא את שמות השירותים במסוףGoogle Cloud .

  • אפשר להגדיר את שיטת ה-HTTP שרוצים להשתמש בה כשהמשימה מופעלת. ערך ברירת המחדל הוא POST.

  • אפשר גם לציין את הגרסה. אם לא מגדירים את הערך, המערכת משתמשת בגרסה שמוצגת כרגע. אפשר לראות את הגרסאות הזמינות במסוףGoogle Cloud .

  • אפשר גם לציין את המופע. אם לא מגדירים את המדיניות, אפשר להשתמש בכל מופע זמין. אפשר לראות את הגרסאות הזמינות במסוףGoogle Cloud .

  • אפשר גם לציין את הנתונים שיישלחו ליעד. הנתונים האלה נשלחים בגוף הבקשה כבייטים כשבוחרים בשיטת ה-HTTP‏ POST או PUT.

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

דוגמה

gcloud scheduler jobs create app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

עריכת משרה

אפשר לערוך את ההגדרה של עבודה.

המסוף

  1. נכנסים לדף Cloud Scheduler במסוף Google Cloud .

    כניסה ל-Cloud Scheduler

  2. בוחרים את המשרה שרוצים לערוך.

  3. לוחצים על Edit.

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

gcloud

כשעורכים משימה באמצעות ה-CLI של gcloud, משתמשים בפקודות שונות לכל סוג יעד:

HTTP

אפשר לשלוח בקשה לכל נקודת קצה של HTTP או HTTPS. נקודות קצה מטורגטות של HTTP צריכות להיות נגישות לכולם.

gcloud scheduler jobs update http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

מחליפים את מה שכתוב בשדות הבאים:

  • JOB: שם המשימה שחייב להיות ייחודי בפרויקט. שימו לב: אי אפשר להשתמש שוב בשם של משימה בפרויקט, גם אם מוחקים את המשימה המשויכת.

  • LOCATION: המיקום שבו המשימה פועלת. אם לא מציינים את המיקום, ה-CLI של gcloud ישתמש במיקום ברירת המחדל. אם המשרה שרוצים לערוך נמצאת במיקום אחר, צריך לציין את המיקום בנוסף ל-NAME כדי שהמשרה תזוהה. אי אפשר לעדכן את מיקום העבודה.

  • SCHEDULE: התדירות או המרווח בין הפעלות של העבודה. לדוגמה: every 3 hours. המחרוזת שאתם מספקים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. אנחנו כבר לא ממליצים להשתמש בתחביר cron מדור קודם של App Engine, אבל הוא עדיין נתמך במשימות קיימות.

    מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.

  • URI: ה-URI המוגדר במלואו של נקודת הקצה שהעבודה תיצור איתה קשר.

פרמטרים אחרים מתוארים במדריך העזר לשורת הפקודה של gcloud.

דוגמה

gcloud scheduler jobs update http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

חובה להשתמש בנושא Pub/Sub שכבר הגדרתם בפרויקט. ‫Cloud Scheduler יפרסם הודעות בנושא הזה כחשבון שירות של Google API.

gcloud scheduler jobs update pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

מחליפים את מה שכתוב בשדות הבאים:

  • JOB: שם המשימה שחייב להיות ייחודי בפרויקט. שימו לב: אי אפשר להשתמש שוב בשם של משימה בפרויקט, גם אם מוחקים את המשימה המשויכת.

  • LOCATION: המיקום שבו המשימה פועלת. אם לא מציינים את המיקום, ה-CLI של gcloud ישתמש במיקום ברירת המחדל. אם המשרה שרוצים לערוך נמצאת במיקום אחר, צריך לציין את המיקום בנוסף ל-NAME כדי שהמשרה תזוהה. אי אפשר לעדכן את מיקום העבודה.

  • SCHEDULE: התדירות או המרווח בין הפעלות של המשימה, למשל every 3 hours. המחרוזת שאתם מציינים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. אנחנו כבר לא ממליצים להשתמש בתחביר cron מדור קודם של App Engine, אבל הוא עדיין נתמך במשימות קיימות.

    מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.

  • TOPIC: השם של הנושא שהמשימה תפרסם בו. משתמשים בדגל --message-body או --message-body-from-file כדי לציין הודעה לשליחה לנושא. הערך הזה נשלח כפרמטר data בהודעת Pub/Sub. דוגמה לכך מופיעה במדריך למתחילים.

פרמטרים אחרים מתוארים במדריך העזר לשורת הפקודה של gcloud.

דוגמה

gcloud scheduler jobs update pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic --message-body "Hello"

App Engine HTTP

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

אפשר לאבטח נקודות קצה של App Engine באמצעות login: admin ברכיב handlers בקובץ app.yaml.

gcloud scheduler jobs update app-engine JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

מחליפים את מה שכתוב בשדות הבאים:

  • JOB: שם המשימה שחייב להיות ייחודי בפרויקט. שימו לב: אי אפשר להשתמש שוב בשם של משימה בפרויקט, גם אם מוחקים את המשימה המשויכת.

  • LOCATION: המיקום שבו העבודה מופעלת (זהה למיקום של אפליקציית App Engine שהוגדרה כיעד). אם לא מציינים את המיקום, ה-CLI של gcloud ישתמש במיקום ברירת המחדל. אם המשרה שרוצים לערוך נמצאת במיקום אחר, צריך לציין את המיקום בנוסף ל-NAME כדי שהמשרה תזוהה. אי אפשר לעדכן את מיקום העבודה.

  • SCHEDULE: התדירות או המרווח בין הפעלות של המשימה, למשל every 3 hours. המחרוזת שאתם מציינים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. אנחנו כבר לא ממליצים להשתמש בתחביר cron מדור קודם של App Engine, אבל הוא עדיין נתמך במשימות קיימות.

    מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.

פרמטרים אחרים מתוארים במדריך העזר לשורת הפקודה של gcloud.

דוגמה

gcloud scheduler jobs update app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

השהיית משימה

אפשר להשהות את ההרצה של עבודה.

המסוף

  1. נכנסים אל Cloud Scheduler במסוף Google Cloud .

    כניסה ל-Cloud Scheduler

  2. בוחרים את העבודה שרוצים להשהות.

  3. לוחצים על השהיה.

gcloud

  1. פותחים חלון טרמינל במחשב שבו התקנתם את ה-CLI של gcloud.

  2. מריצים את הפקודה:

     gcloud scheduler jobs pause MY_JOB
    

    מחליפים את MY_JOB בשם של העבודה שרוצים להשהות.

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

המשך של עבודה

אפשר להמשיך את ההפעלה של עבודה שהושהתה.

המסוף

  1. נכנסים אל Cloud Scheduler במסוף Google Cloud .

    כניסה ל-Cloud Scheduler

  2. בוחרים את העבודה שרוצים להמשיך.

    העבודה צריכה להיות כבר מושהית.

  3. לוחצים על המשך.

gcloud

  1. פותחים חלון טרמינל במחשב שבו התקנתם את ה-CLI של gcloud.

  2. מריצים את הפקודה:

     gcloud scheduler jobs resume MY_JOB
    

    מחליפים את MY_JOB בשם של העבודה שרוצים להמשיך.

מחיקת משימה

אפשר למחוק משרה.

המסוף

  1. נכנסים אל Cloud Scheduler במסוף Google Cloud .

    כניסה ל-Cloud Scheduler

  2. בוחרים את המשרה שרוצים למחוק.

  3. לוחצים על Delete.

gcloud

  1. פותחים חלון טרמינל במחשב שבו התקנתם את ה-CLI של gcloud.

  2. מריצים את הפקודה:

     gcloud scheduler jobs delete MY_JOB
    

    מחליפים את MY_JOB בשם של המשימה שרוצים למחוק.