כשיוצרים משימה, אפשר לציין את המספר המקסימלי של ניסיונות חוזרים למשימה שנכשלה, להגדיר מגבלת זמן לניסיונות חוזרים ולשלוט במרווח הזמן בין הניסיונות באמצעות השיטה projects.locations.queues.tasks.create. אחרי שמשימה מבוצעת בהצלחה, היא מוסרת מהתור. בכל המקרים, חלה גם המגבלה של שמירת משימות לפרק זמן מקסימלי.
ההגדרה הזו של ניסיון חוזר ברמת המשימה מחליפה את ההגדרה של ניסיון חוזר ברמת התור עבור המשימה.
הגדרת ניסיונות חוזרים כשיוצרים משימה
בדוגמה הבאה מוצגות הגדרות של פרמטרים לניסיון חוזר כשיוצרים משימת יעד HTTP על ידי שליחת בקשה ישירה ל-Cloud Tasks API. אפשר להשתמש באותם פרמטרים של ניסיון חוזר כשיוצרים משימה ב-App Engine. פרטים נוספים על הפרמטרים זמינים בהגדרות של RetryConfig עבור המשאב Task.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: חובה. מזהה הפרויקט של Google Cloud הפרויקט שבו תיווצר המשימה. -
REGION: חובה. האזור שבו התור נפרס – לדוגמה,us-central1. -
QUEUE_ID: חובה. המזהה של התור שאליו תתווסף המשימה. -
URL: חובה. כתובת ה-URL המוגדרת במלואה שאליה תישלח הבקשה. המחרוזת הזו חייבת להתחיל ב-http://או ב-https://, למשל:https://www.example.com. -
SERVICE_ACCOUNT_EMAIL: אופציונלי. כתובת האימייל בחשבון השירות ששימשה ליצירת טוקן הרשאה שנכלל בבקשה שנשלחת ליעד כשמבצעים את המשימה. חשבון השירות חייב להיות באותו פרויקט כמו התור. למבצע הקריאה צריכה להיות ההרשאהiam.serviceAccounts.actAsבחשבון השירות.כדי ליצור טוקן גישה מסוג OAuth2 במקום אסימון OpenID Connect, מחליפים את השדה
oidcTokenב-oauthTokenכדי לציין את כתובת האימייל בחשבון השירות. -
MAX_ATTEMPTS: אופציונלי. מספר הניסיונות המקסימלי למשימה, כולל הניסיון הראשון. כדי לאפשר ניסיונות חוזרים ללא הגבלה, מגדירים את הערך הזה ל--1. ההגבלהMAX_RETRY_DURATIONעדיין חלה גם אם הושג הערךMAX_ATTEMPTSאו אם הוא הוגדר ל--1. -
MAX_RETRY_DURATION: אופציונלי. משך הזמן המקסימלי לניסיון חוזר של משימה שנכשלה, שנמדד מהניסיון הראשון לבצע את המשימה. הערך חייב להיות מחרוזת שמסתיימת ב-s, למשל5s. כדי לציין משך זמן בלתי מוגבל, מגדירים את הערך הזה ל-0s.MAX_ATTEMPTSעדיין חל גם אם מגיעים ל-MAX_RETRY_DURATIONאו אם הוא מוגדר ל-0s. Cloud Tasks יפסיק לנסות שוב רק אחרי ששני התנאים יתקיימו או שהמשימה תצליח. -
MIN_INTERVAL: אופציונלי. פרק הזמן המינימלי שצריך להמתין בין ניסיונות חוזרים. הערך חייב להיות מחרוזת שמסתיימת ב-s, למשל5s. -
MAX_INTERVAL: אופציונלי. הזמן המקסימלי להמתנה בין ניסיונות חוזרים. הערך חייב להיות מחרוזת שמסתיימת ב-s, למשל5s. -
MAX_DOUBLINGS: אופציונלי. המספר המקסימלי של פעמים שבהן המרווח בין ניסיונות חוזרים של משימה שנכשלה יוכפל לפני שההגדלה תהפוך לקבועה. מרווח הזמן בין ניסיונות חוזרים של משימה מתחיל ב-MIN_INTERVAL, מוכפלMAX_DOUBLINGSפעמים, ואז עולה באופן לינארי. לבסוף, המערכת מנסה שוב במרווחי זמן שלMAX_INTERVALעדMAX_ATTEMPTSפעמים.לדוגמה, אם
MIN_INTERVALהוא10s,MAX_INTERVALהוא300s, ו-MAX_DOUBLINGSהוא3, מרווח הניסיון החוזר יוכפל3פעמים, יגדל באופן ליניארי ב-2^3 * 10s, ואז יתבצע ניסיון חוזר במרווחים שלMAX_INTERVALעד שהמשימה תנסהMAX_ATTEMPTSפעמים: 10 שניות, 20 שניות, 40 שניות, 80 שניות, 160 שניות, 240 שניות, 300 שניות, 300 שניות וכן הלאה. -
SCHEDULE_TIME: אופציונלי. השעה שבה המשימה מתוזמנת לניסיון, בפורמט RFC 3339 – לדוגמה,2026-10-02T15:01:23Z. אם השעה לא מוגדרת או שהיא כבר עברה, Cloud Tasks יגדיר אותה לשעה הנוכחית.
תוכן בקשת JSON:
{
"task": {
"httpRequest": {
"url": "URL",
"httpMethod": "POST",
"oidcToken": {
"serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL"
}
},
"retryConfig": {
"maxAttempts": MAX_ATTEMPTS,
"maxRetryDuration": "MAX_RETRY_DURATION",
"minBackoff": "MIN_INTERVAL",
"maxBackoff": "MAX_INTERVAL",
"maxDoublings": MAX_DOUBLINGS
},
"scheduleTime": "SCHEDULE_TIME"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל את המופע החדש של משאב Task.
{
"name": "projects/PROJECT_ID/locations/REGION/queues/QUEUE_ID/tasks/TASK_ID",
"httpRequest": {
"url": "URL",
"httpMethod": "POST",
"headers": {
"User-Agent": "Google-Cloud-Tasks"
},
"oidcToken": {
"serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL",
"audience": "URL"
}
},
"retryConfig": {
"maxAttempts": MAX_ATTEMPTS,
"maxRetryDuration": "MAX_RETRY_DURATION",
"minBackoff": "MIN_INTERVAL",
"maxBackoff": "MAX_INTERVAL",
"maxDoublings": MAX_DOUBLINGS
},
"scheduleTime": "SCHEDULE_TIME",
"createTime": "2026-04-30T19:11:50Z",
"dispatchDeadline": "600s",
"view": "BASIC"
}