הפניה אל queue.yaml

מזהה אזור

REGION_ID הוא קוד מקוצר ש-Google מקצה על סמך האזור שבוחרים כשיוצרים את האפליקציה. הקוד לא תואם למדינה או למחוז, למרות שחלק ממזהי האזורים עשויים להיראות דומים לקודים נפוצים של מדינות ומחוזות. באפליקציות שנוצרו אחרי פברואר 2020, REGION_ID.r נכלל בכתובות URL של App Engine. באפליקציות קיימות שנוצרו לפני התאריך הזה, מזהה האזור הוא אופציונלי בכתובת ה-URL.

מידע נוסף על מזהי אזורים

קובץ התצורה queue.yaml משמש ליצירה ולהגדרה של כמעט כל תורי המשימות (push או pull) שבהם האפליקציה משתמשת. כל אפליקציות App Engine מגיעות עם תור דחיפה שהוגדר מראש באופן אוטומטי בשם default. אתם לא יוצרים את התור default בעצמכם, אבל אתם יכולים להוסיף תורים אחרים או לשנות את ההגדרה של התור default באמצעות הקובץ queue.yaml.

כדי להגדיר תורים להעברת הודעות (push), אפשר להשתמש בשיטות queue.yaml או Queue Management מ-Cloud Tasks, אבל לא בשתיהן בו-זמנית. שילוב של שיטת ההעלאה queue.yaml עם שיטות לניהול תור עלול להניב תוצאות בלתי צפויות, ולכן לא מומלץ.

כדי להגדיר תורים של בקשות משיכה, צריך להשתמש בקובץ queue.yaml. ‫Cloud Tasks לא תומך בתורי משימות מסוג pull.

.

דוגמה

הדוגמה הבאה היא דוגמה בסיסית להגדרת תור עם שם ולשינוי קצב העיבוד שמוגדר כברירת מחדל:

queue:
- name: my-push-queue
  rate: 1/s

בדוגמה המורכבת הבאה של הגדרת queue.yaml אפשר לראות איך מגדירים את מספר הניסיונות להפעלת משימה ואיך משנים את קצב העיבוד שמוגדר כברירת מחדל.

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: 200
    max_doublings: 3

תחביר

קובץ queue.yaml הוא קובץ YAML שההנחיה הראשית שלו היא queue. ההנחיה הזו מכילה אפס תורים או יותר עם שמות. כל הגדרה של תור יכולה לציין את הרכיבים הבאים:

רכיב תיאור
bucket_size (תורים של הודעות Push)

זה שינוי אופציונלי. תור משימות משתמש באלגוריתם token bucket כדי לשלוט בקצב הביצוע של המשימות. לכל תור בעל שם יש token bucket שמכיל אסימונים, עד למקסימום שצוין בערך bucket_size. בכל פעם שהאפליקציה מבצעת משימה, אסימון מוסר מהמאגר. ממשיכים לעבד משימות בתור עד שנגמרים האסימונים בדלי של התור. מערכת App Engine ממלאת מחדש את המאגר באסימונים חדשים באופן רציף על סמך הקצב שציינתם לתור.

גודל הדלי מגביל את מהירות העיבוד של התור כשיש בו הרבה משימות וקצב העיבוד גבוה. הערך המקסימלי של bucket size הוא 500. כך תוכלו להגדיר קצב גבוה כדי שהעיבוד יתחיל זמן קצר אחרי שהמשימה תתווסף לתור, אבל עדיין להגביל את השימוש במשאבים אם הרבה משימות יתווספו לתור בפרק זמן קצר.

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

מידע נוסף על הרכיב הזה זמין בתיאור ההשוואתי של max_burst_size

במאמר בנושא Cloud Tasks API.
max_concurrent_requests (תורים של הודעות Push)

זה שינוי אופציונלי. הגדרת המספר המקסימלי של משימות שאפשר להריץ בו-זמנית בתור שצוין. הערך הוא מספר שלם. כברירת מחדל, המגבלה היא 1,000 משימות לכל תור. המגבלה המומלצת העליונה היא 5,000 משימות לכל תור. שימו לב: יכול להיות שייקח זמן עד שהתורות יתמלאו אם הן נוצרו לאחרונה או אם הן היו ריקות במשך זמן מה.

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

מידע נוסף על הרכיב הזה מופיע בתיאור ההשוואתי של max_concurrent_dispatches בהפניית ה-API של Cloud Tasks.

mode

זה שינוי אופציונלי. מזהה את מצב התור. ההגדרה הזו מוגדרת כברירת מחדל לערך push שמזהה תור כ-push queue. כדי להשתמש בתורים מסוג pull, מגדירים את המצב ל-pull.

name

חובה. שם התור. זה השם שציינתם כשמתקשרים למספר QueueFactory.getQueue().

שם התור יכול להכיל אותיות גדולות וקטנות, מספרים ומקפים. האורך המקסימלי של שם התור הוא 100 תווים.

לכל האפליקציות יש תור דחיפה (push queue) בשם default. בתור הזה מוגדר מראש קצב של 5 משימות בשנייה. שימו לב: תור ברירת המחדל הזה לא מוצג ב- Google Cloud console עד שמשתמשים בו או מגדירים אותו בפעם הראשונה. אפשר להגדיר את תור ברירת המחדל, כולל שינוי הקצב שמוגדר כברירת מחדל, על ידי הגדרת תור בשם default בקובץ queue.yaml.

rate (תורים של הודעות Push)

חובה. התדירות שבה המשימות מעובדות בתור הזה. הערך הוא מספר שאחריו מופיע לוכסן ויחידת זמן, כאשר היחידה היא s לשניות, m לדקות, h לשעות או d לימים. לדוגמה, הערך 5/m מציין שהמשימות יעובדו בקצב של 5 פעמים בדקה. הערך המקסימלי של rate הוא 500/s.

אם המספר הוא 0 (למשל 0/s), התור נחשב כ'מושהה' ולא מתבצע עיבוד של משימות.

מידע נוסף על הרכיב הזה מופיע בתיאור ההשוואתי של max_dispatches_per_second בהפניית ה-API של Cloud Tasks.

retry_parameters

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

פרמטרים של ניסיון חוזר יכולים להכיל את רכיבי המשנה הבאים:

task_retry_limit
מספר הניסיונות החוזרים. לדוגמה, אם מציינים את 0 והמשימה נכשלת, המערכת לא תנסה שוב לבצע את המשימה. אם מציינים את 1 והמשימה נכשלת, המערכת מנסה להפעיל אותה מחדש פעם אחת. אם לא מציינים ערך לפרמטר הזה, המערכת תנסה לבצע את המשימה שוב ושוב ללא הגבלה. אם מציינים את task_retry_limit עם task_age_limit, המשימה תנסה שוב עד שתגיע לשתי המגבלות.
task_age_limit (תורים של הודעות Push)
הזמן המקסימלי לניסיון חוזר של משימה שנכשלה, שנמדד מהרגע שבו המשימה הופעלה לראשונה. הערך הוא מספר שאחריו יחידת זמן, כאשר היחידה היא s לשניות, m לדקות, h לשעות או d לימים. לדוגמה, הערך 5d מציין מגבלה של חמישה ימים אחרי הניסיון הראשון להפעלת המשימה. אם לא מציינים ערך לפרמטר הזה, המערכת תנסה לבצע את המשימה שוב ושוב ללא הגבלה. אם מציינים את הערך task_retry_limit, ‏ App Engine מנסה שוב לבצע את המשימה עד שמגיעים לשתי המגבלות.
min_backoff_seconds (תורים של הודעות Push)
מספר השניות המינימלי להמתנה לפני ניסיון חוזר של משימה אחרי שהיא נכשלת. ערך ברירת המחדל הוא 0.1.
max_backoff_seconds (תורים של הודעות Push)
מספר השניות המקסימלי להמתנה לפני ניסיון חוזר של משימה אחרי שהיא נכשלת. ערך ברירת המחדל הוא 3600.
max_doublings (תורים של הודעות Push)
המספר המקסימלי של פעמים שבהן המרווח בין ניסיונות חוזרים של משימה שנכשלה יוכפל לפני שההגדלה תהפוך לקבועה. הקבוע הוא: 2**max_doublings * min_backoff_seconds. ערך ברירת המחדל הוא 16.
target (תורים של הודעות Push)

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

המחרוזת מתווספת לפני שם הדומיין של האפליקציה כשיוצרים את בקשת ה-HTTP למשימה. לדוגמה, אם מזהה האפליקציה שלכם הוא my-app והגדרתם את היעד ל-my-version-dot-my-service, שם המארח של כתובת ה-URL יוגדר ל-my-version-dot-my-service-dot-my-app.REGION_ID.r.appspot.com.

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

אם אתם משתמשים בשירותים עם קובץ שליחה, יכול להיות שבקשת ה-HTTP של המשימה שלכם תיירט ותנותב מחדש לשירות אחר.

אפשר לציין את הרכיבים הבאים לכל התורים באפליקציה:

רכיב תיאור
total_storage_limit

זה שינוי אופציונלי. מחרוזת שמבטלת את מגבלת האחסון שמוגדרת כברירת מחדל, שזמינה לאחסון ב-taskqueue ‏ (100M). לדוגמה:

          total_storage_limit: 1.2G
          queue:
            - name: fooqueue

המכסה הזו היא חלק ממכסת האחסון הכוללת של האפליקציה (כולל מכסת האחסון של מאגר הנתונים ומאגר ה-Blob).

אם לא מציינים סיומת, המספר שציינתם יפורש כבייטים. יש תמיכה בסיומות הבאות:

  • B (בייטים)
  • K (קילובייט)
  • M (מגה-בייט)
  • G (ג'יגה-בייט)
  • T (טרה-בייט)

total_storage_limit חורג מנפח האחסון הכולל בדיסק שזמין לאפליקציה, המגבלה היא נפח האחסון הזמין.

פריסת קובץ תצורת התור

הקובץ queue.yaml צריך להיות בספריית הבסיס או בספרייה שמגדירה את שירות ברירת המחדל.

כדי לפרוס את קובץ התצורה של התור, מריצים את הפקודה הבאה:

gcloud app deploy queue.yaml

מחיקת תורים

כדי למחוק תור:

  1. מסירים את הגדרת התור מהקובץ queue.yaml.

  2. מעלים את השינוי לקובץ queue.yaml.

    gcloud app deploy queue.yaml

  3. מוחקים את התור במסוף Google Cloud , בוחרים את התור ולוחצים על מחיקת התור:

    כניסה לדף Task queues

אם מוחקים תור מה Google Cloud מסוף, צריך לחכות 7 ימים לפני שיוצרים אותו מחדש באותו שם.