ניסיון חוזר של משימות

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

ניסיון חוזר להגדרות

בטבלאות הבאות מתוארות הגדרות הניסיון החוזר שאפשר להגדיר.

מספר הניסיונות החוזרים המקסימלי

מספר הניסיונות שהמערכת תבצע כדי להריץ עבודה באמצעות ההשהיה המעריכית לפני ניסיון חוזר שמתוארת ב-maxDoublings.

תיאור

אם retryCount מוגדר למספר שאינו אפס, Cloud Scheduler ינסה שוב להריץ את העבודה שנכשלה, באמצעות השהיה מעריכית לפני ניסיון חוזר (exponential backoff), למשך retryCount פעמים עד שהעבודה תצליח או עד שייגמר מספר הניסיונות החוזרים. שימו לב: יכול להיות שהמערכת תדלג על זמן ההפעלה המתוזמן הבא אם הניסיונות החוזרים יימשכו עד אז.

אם retryCount הוא 0 (וגם אם maxRetryDuration הוא 0), לא יתבצע ניסיון חוזר להפעלת משימה אם היא תיכשל. במקום זאת, Cloud Scheduler ימתין למועד ההפעלה המתוזמן הבא.

אסור להזין ערכים שגדולים מ-5 וערכים שליליים.

ברירת מחדל ברירת המחדל היא 0.
תווית קונסולה מקסימום ניסיונות חוזרים
CLI flag --max-retry-attempts
שדה API retryCount

משך הזמן המקסימלי לניסיון חוזר

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

תיאור

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה, שמסתיים ב-s – לדוגמה, ‎3.5s.

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

ברירת מחדל ברירת המחדל היא 0 שניות.
תווית קונסולה משך הזמן המקסימלי לניסיון חוזר
CLI flag --max-retry-duration
שדה API maxRetryDuration

משך ההשהיה לפני ניסיון חוזר מינימלי

הזמן המינימלי שצריך להמתין לפני שמנסים שוב להריץ משימה אחרי שהיא נכשלה.

תיאור

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה, שמסתיים ב-s – לדוגמה, ‎3.5s.

ברירת מחדל ברירת המחדל היא 5 שניות.
תווית קונסולה משך הזמן המינימלי להשהיה לפני ניסיון חוזר
CLI flag --min-backoff
שדה API minBackoffDuration

משך הזמן המקסימלי של ההשהיה לפני ניסיון חוזר

הזמן המקסימלי להמתנה לפני ניסיון חוזר של עבודה שנכשלה.

תיאור

משך זמן בשניות עם עד תשע ספרות אחרי הנקודה, שמסתיים ב-s – לדוגמה, ‎3.5s.

ברירת מחדל ברירת המחדל היא 3,600 שניות (שעה).
תווית קונסולה משך הזמן המקסימלי להשהיה
CLI flag --max-backoff
שדה API maxBackoffDuration

מספר הכפלות מקסימלי

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

תיאור הזמן בין הניסיונות החוזרים יוכפל maxDoublings פעמים.

מרווח הזמן בין ניסיונות חוזרים של משימה מתחיל ב-minBackoffDuration, מוכפל maxDoublings פעמים, ואז עולה באופן לינארי. לבסוף, המערכת מנסה שוב במרווחי זמן של maxBackoffDuration עד retryCount פעמים. לדוגמה:

אם minBackoffDuration הוא 10 שניות, maxBackoffDuration הוא 300 שניות ו-maxDoublings הוא 3:

  1. המערכת תנסה לבצע את העבודה שוב בעוד 10 שניות.
  2. מרווח הזמן לניסיון חוזר יוכפל שלוש פעמים.
  3. מרווח הזמן בין הניסיונות החוזרים יגדל באופן לינארי ב-2^3 * 10 שניות.
  4. אם רלוונטי, המערכת תנסה שוב להריץ את העבודה במרווחי זמן של maxBackoffDuration עד שהעבודה תנסה retryCount פעמים (עד 5 פעמים).

לכן, המערכת תנסה לשלוח שוב את הבקשות אחרי 10 שניות, 20 שניות, 40 שניות, 80 שניות ו-160 שניות.

אם minBackoffDuration הוא 10 שניות, maxBackoffDuration הוא 120 שניות ו-maxDoublings הוא 2:

  1. המערכת תנסה לבצע את העבודה שוב בעוד 10 שניות.
  2. מרווח הזמן לניסיון חוזר יוכפל פעמיים.
  3. מרווח הזמן בין הניסיונות יגדל באופן לינארי ב-‎2^2 * 10s.
  4. אם רלוונטי, המערכת תנסה שוב להריץ את העבודה במרווחי זמן של maxBackoffDuration עד שהעבודה תנסה retryCount פעמים (עד 5 פעמים).

לכן, המערכת תנסה לשלוח שוב את הבקשות אחרי 10 שניות, 20 שניות, 40 שניות, 80 שניות ו-120 שניות.

ברירת מחדל ברירת המחדל היא 5.
תווית קונסולה מספר הכפלות מקסימלי
CLI flag --max-doublings
שדה API maxDoublings

דוגמאות לניסיון חוזר

בדוגמאות הבאות אפשר לראות את התנהגות הניסיון החוזר כשמשימה של Cloud Scheduler לא מסתיימת בהצלחה.

אם לא מוגדרים הערכים של retryCount ו-maxRetryDuration

שתי ההגדרות מוגדרות כברירת מחדל ל-0, והעבודה לא מנסה שוב בכלל.

שימו לב: Cloud Scheduler ינסה להריץ את המשימה בזמן ההרצה המתוזמן הבא.

אם גם retryCount וגם maxRetryDuration מוגדרות

המשימה תנסה שוב לפחות retryCount פעמים עד שתגיע ל-maxRetryDuration.

שימו לב: יכול להיות שהעבודה תנסה שוב יותר פעמים מהמספר שצוין ב-retryCount.

אם retryCount מוגדר ו-maxRetryDuration לא מוגדר

הגדרת maxRetryDuration היא 0 כברירת מחדל, והמשימה תנסה שוב בדיוק retryCount פעמים.

אם retryCount לא מוגדר ו-maxRetryDuration מוגדר

המערכת תנסה להפעיל את העבודה שוב כמה פעמים שצריך (עד 5 פעמים) או עד שתגיע לערך maxRetryDuration.