יכולות להיות הרבה סיבות לכך שעיבוד של משימות 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