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