כדי להריץ את האפליקציה בסביבת זמן הריצה של Python 3 בסביבה הרגילה של App Engine, יכול להיות שתצטרכו לשנות חלק מקובצי ההגדרות שבהם נעשה שימוש ב-App Engine:
app.yaml. הקובץ הזה מכיל מידע על הקוד של האפליקציה, כמו זמן הריצה ומטפלי האפליקציה.
appengine_config.py. סביבת זמן הריצה של Python 2 משתמשת בקובץ הזה כדי לגשת לספריות של צד שלישי ולספק ערכים לקבועים ולפונקציות hook. סביבת זמן הריצה של Python 3 לא משתמשת בקובץ הזה.
מתבצע עדכון של app.yaml
ההתנהגות של חלק מהשדות בקובץ ההגדרות app.yaml השתנתה. צריך להסיר את השדות שכבר לא נתמכים ולעדכן את השדות האחרים כמו שמתואר בטבלה הבאה.
| שדה | סוג השינוי | תיאור |
|---|---|---|
| app_engine_bundled_services | רלוונטי רק ל-Python 3 | מגדירים את השדה הזה כדי לגשת לחבילות שירותים ספציפיות מדור קודם ל-Python 3.
מידע נוסף על הגדרות התצורה של app_engine_bundled_services
זמין בהפניה לקובץ app.yaml. |
| api_version application_readable builtins |
אין יותר תמיכה בגרסה הזו | לא רלוונטי בסביבת זמן הריצה של Python 3. |
| threadsafe | אין יותר תמיכה בגרסה הזו | כל האפליקציות נחשבות כבטוחות לשימוש עם שרשורים. אם האפליקציה שלכם לא בטוחה לשימוש עם שרשורים, צריך לציין entrypoint ולהגדיר שרשור אחד לכל תהליך עובד.לדוגמה, כשמשתמשים במחלקת המופעים F4: entrypoint: gunicorn -b :$PORT -w 8 --threads 1 main:appבמאמר שיטות מומלצות לנקודות כניסה מפורט מספר התהליכים העובדים המומלץ לכל מחלקת מופעים. |
| ספריות | אין יותר תמיכה בגרסה הזו |
משתמשים בקובץ requirements.txt כדי להצהיר על יחסי תלות ולהתקין ספריות לקוח.
|
| handlers: login | האפשרות הזו נתמכת אם מפעילים את Users API על ידי הגדרת האפשרות user ברשימה app_engine_bundled_services. |
אם אתם לא משתמשים בחבילת השירותים מדור קודם ל-Python 3, אתם יכולים להשתמש בניהול זהויות והרשאות גישה (IAM) לניהול משתמשים. |
| handlers: script | השתנה | בזמן הריצה של Python 2, משתמשים בשדה script כדי להפנות בקשות נכנסות לסקריפט של האפליקציה.
בזמן הריצה של Python 3, אתם נדרשים להשתמש ב-framework לאינטרנט עם ניתוב בתוך האפליקציה (כמו Flask או Django) במקום להשתמש בשדה כדי להעביר את קובץ
הטיפול בקבצים סטטיים לא משתנה. |
אם משתמשים בשדות שהוצאו משימוש, App Engine מחזיר שגיאה כשמפעילים את האפליקציה.
בדוגמאות הבאות אפשר לראות את ההבדלים בין קובצי app.yaml:
Python 2
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /
script: home.app
- url: /index\.html
script: home.app
- url: /stylesheets
static_dir: stylesheets
- url: /(.*\.(gif|png|jpg))$
static_files: static/\1
upload: static/.*\.(gif|png|jpg)$
- url: /admin/.*
script: admin.app
login: admin
- url: /.*
script: not_found.app
Python 3
runtime: python314
app_engine_bundled_services:
#list your services
handlers:
- url: /stylesheets
static_dir: stylesheets
- url: /(.*\.(gif|png|jpg))$
static_files: static/\1
upload: static/.*\.(gif|png|jpg)$
- url: /admin/.*
script: auto
login: admin
בתהליך הסרה של appengine_config.py
זמן הריצה של Python 2 בסביבה הרגילה של App Engine משתמש בקובץ appengine_config.py.
המערכת מתעלמת מהקובץ הזה בסביבת זמן הריצה של Python 3. במקום זאת, סביבת זמן הריצה של Python 3 משתמשת בקובץ requirements.txt הרגיל כדי להתקין יחסי תלות, כולל יחסי תלות שמשתמשים בקוד Native.