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

כשיוצרים משימה, אפשר לציין את המספר המקסימלי של ניסיונות חוזרים למשימה שנכשלה, להגדיר מגבלת זמן לניסיונות חוזרים ולשלוט במרווח הזמן בין הניסיונות באמצעות השיטה 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"
}

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