הפניה אל queue.yaml

מזהה אזור

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

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

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

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

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

.

דוגמה

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

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 ממלאת מחדש את המאגר באסימונים חדשים באופן רציף על סמך הקצב שציינתם לתור.

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

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

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

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

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

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

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

mode

זה שינוי אופציונלי. מזהה את מצב התור. הגדרת ברירת המחדל היא push שמזהה תור כ-push queue. כדי להשתמש בתורים של בקשות משיכה, מגדירים את המצב ל-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 במאמר בנושא הפניית Cloud Tasks API.

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

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