לפני שמשדרגים לגרסה העדכנית ביותר של ה-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.
מוודאים שיש לכם גישה לקוד המקור של App Engine.
מפעילים את Cloud Tasks API ואת Cloud Scheduler API:
כדי לוודא שלחשבון השירות של App Engine יש את ההרשאות הנדרשות כדי לאפשר ל-SDK לשלוח משימות ל-Cloud Tasks API, צריך לבקש מהאדמין להקצות את תפקיד ה-IAM Cloud Tasks Enqueuer (
roles/cloudtasks.enqueuer) בפרויקט.
עדכון ה-SDK של שירותי App Engine
מוודאים שהאפליקציה משתמשת בגרסה העדכנית ביותר של App Engine services SDK.
מעדכנים את התלות
google-appengine-apiלגרסהv3.1.0b0או לגרסה מתקדמת יותר. לדוגמה:Flask==3.0.0 appengine-python-standard>=v3.1.0b0 google-cloud-tasks
הפעלת ניתוב של Cloud Tasks
runtime: 3.14 service: my-service-b env_variables: APPENGINE_USE_CLOUDTASK_PUSH_QUEUE: "true"פריסת האפליקציה:
gcloud app deployאימות של תורי הודעות בדחיפה ב-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
המאמרים הבאים
- מאמרי העזרה של Cloud Tasks
- ספריית הלקוח של Cloud Tasks
- סקירה כללית על Cloud Tasks REST reference
- סקירה כללית על חומר עזר של Cloud Tasks RPC
- ב-codelab בנושא מעבר מתורים של דחיפת הודעות בתור המשימות של App Engine ל-Cloud Tasks מופיע מדריך בנושא.