מעבר מתורים של דחיפת הודעות ל-Cloud Tasks על ידי שדרוג לגרסת ה-SDK העדכנית ביותר (Python)

לפני שמשדרגים לגרסה העדכנית ביותר של ה-SDK של שירותי App Engine, כדאי לעיין בסקירה הכללית של המעבר.

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

מתחת לפני השטח, ערכת ה-SDK המעודכנת משתמשת בממשקי Cloud Tasks API כדי לשמור על שוויון תכונות עם התכונות של Task Queues. ערכת ה-SDK תומכת בפעולות הבאות:

  • יצירת משימות בקבוצות: ה-SDK משתמש בממשקי API לפעולות מקובצות כדי לתמוך בהוספה של עד 100 משימות בקריאה אחת.
  • ניסיונות חוזרים ברמת המשימה: ה-SDK תומך בהגדרות של ניסיונות חוזרים ספציפיים למשימה.
  • משימות טרנזקציונליות: ערכת ה-SDK מוסיפה משימות לתור בתוך טרנזקציות של Datastore. כדי לשמור על מהימנות, צריך ליצור או לשנות את הקובץ cron.yaml.

תמחור ומכסות

העברת תורי הדחיפה ל-Cloud Tasks עשויה להשפיע על התמחור והמכסות של האפליקציה.

תמחור

לפני המעבר, כדאי לעיין בתמחור של Cloud Tasks כדי להעריך את העלות החודשית.

בדומה לתורי משימות, שליחת בקשות לאפליקציית App Engine עם יעד דחיפה של Cloud Tasks היא בחינם. עם זאת, בניגוד ל-Task Queues, ב-Cloud Tasks יש חיוב על פעולות שמתבצעות, כמו יצירה, מחיקה או ניהול של משימות. יכול להיות שהעלות החודשית הכוללת תהיה גבוהה יותר בהשוואה לתור המשימות של App Engine שכלול בחינם.

מכסות

בקשות Cloud Tasks נספרות גם במכסות הבקשות של App Engine.

בדומה ל-Task Queues, ל-Cloud Tasks יש מכסות ספציפיות לשירות. המיגרציה ל-Cloud Tasks כנראה תשנה את המכסות שלכם.

לפני שמתחילים

בקטעים הבאים נדון בשיקולי העלות והמכסה לפני העברת תורים של הודעות בדחיפה ל-Cloud Tasks.

  1. מוודאים שיש לכם גישה לקוד המקור של App Engine.

  2. מפעילים את Cloud Tasks API ואת Cloud Scheduler API:

    הפעלת ממשקי API

  3. כדי לוודא שלחשבון השירות של App Engine יש את ההרשאות הנדרשות כדי לאפשר ל-SDK לשלוח משימות ל-Cloud Tasks API, צריך לבקש מהאדמין להקצות את תפקיד ה-IAM‏ Cloud Tasks Enqueuer‏ (roles/cloudtasks.enqueuer) בפרויקט.

עדכון ה-SDK של שירותי App Engine

  1. מוודאים שהאפליקציה משתמשת בגרסה העדכנית ביותר של App Engine services SDK.

    מעדכנים את התלות google-appengine-api לגרסה v3.1.0b0 או לגרסה מתקדמת יותר. לדוגמה:

    Flask==3.0.0
    appengine-python-standard>=v3.1.0b0
    google-cloud-tasks
  2. הפעלת ניתוב של Cloud Tasks

    runtime: 3.14
    service: my-service-b
    
    env_variables:
      APPENGINE_USE_CLOUDTASK_PUSH_QUEUE: "true"
    
  3. פריסת האפליקציה:

    gcloud app deploy
    
  4. אימות של תורי הודעות בדחיפה ב-Cloud Tasks כדי לוודא שהאפליקציה משתמשת ב-Cloud Tasks.

הגדרת משימות שקשורות לעסקאות (אופציונלי)

אם האפליקציה שלכם מוסיפה משימות לתור בעסקאות של Datastore, ה-SDK מסתמך על משימת cron פנימית כדי לוודא שכל המשימות שלא נוספו לתור במהלך השמירה של Datastore יעברו עיבוד בסופו של דבר.

כדי לטפל במשימות טרנזקציונליות בתור דחיפה (push queue), צריך ליצור או לעדכן את הקובץ cron.yaml כדי להפעיל את המעבד הפנימי באופן תקופתי. לדוגמה:

cron:
- description: "Process push queue transactional tasks"
  url: /_ah/cloudtask/sweep
  schedule: every 30 minutes # Change this based on the usage pattern

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