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

יכולות להיות הרבה סיבות לכך שעיבוד של משימות Push דרך תור משימות ייכשל. אם handler לא מצליח להריץ משימה (ולכן מחזיר קוד סטטוס של HTTP מחוץ לטווח 200-299), ‏ App Engine מנסה שוב להריץ את המשימה עד שהיא מצליחה.

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

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

אתם יכולים להתאים אישית את סכימת הניסיונות החוזרים של משימות על ידי הוספת הרכיב retry parameters ב-queue.yaml. התוספת הזו מאפשרת לכם לציין את המספר המקסימלי של ניסיונות חוזרים למשימות שנכשלו בתור ספציפי. אפשר גם להגדיר מגבלת זמן לניסיונות חוזרים ולשלוט במרווח הזמן בין הניסיונות.

בדוגמה הבאה מוצגים תרחישי ניסיון חוזר שונים:

  • ב-fooqueue, המערכת מנסה לבצע משימות עד שבע פעמים, במשך עד יומיים מניסיון ההפעלה הראשון. אחרי שמגיעים לשתי המגבלות, הפעולה נכשלת באופן סופי.
  • ב-barqueue,‏ App Engine מנסה לבצע מחדש משימות, ומגדיל את המרווח באופן ליניארי בין כל ניסיון חוזר עד שמגיע להשהיה המקסימלית לפני ניסיון חוזר, ומנסה שוב ללא הגבלה במרווח המקסימלי (כך שהמרווחים בין הבקשות הם 10 שניות, 20 שניות, 30 שניות וכו', עד 190 שניות, 200 שניות, 200 שניות וכו').
  • בדוגמה bazqueue, מרווח הזמן בין הניסיונות החוזרים מתחיל ב-10 שניות, מוכפל שלוש פעמים, ואז גדל באופן לינארי. לבסוף, המערכת מנסה שוב ושוב ללא הגבלה במרווח המקסימלי (כך שמרווחי הזמן בין הבקשות הם 10 שניות, 20 שניות, 40 שניות, 80 שניות, 160 שניות, 240 שניות, 300 שניות, 300 שניות וכן הלאה).
  queue:
  - name: fooqueue
    rate: 1/s
    retry_parameters:
      task_retry_limit: 7
      task_age_limit: 2d
  - name: barqueue
    rate: 1/s
    retry_parameters:
      min_backoff_seconds: 10
      max_backoff_seconds: 200
      max_doublings: 0
  - name: bazqueue
    rate: 1/s
    retry_parameters:
      min_backoff_seconds: 10
      max_backoff_seconds: 300
      max_doublings: 3

המאמרים הבאים