כדי להריץ את האפליקציה בסביבת זמן הריצה של Python 3 בסביבה הרגילה של App Engine, יכול להיות שתצטרכו לשנות חלק מקובצי ההגדרות שבהם נעשה שימוש ב-App Engine:
app.yaml. הקובץ הזה מכיל מידע על הקוד של האפליקציה, כמו זמן הריצה ומטפלי האפליקציה.
appengine_config.py. סביבת זמן הריצה של Python 2 משתמשת בקובץ הזה כדי לגשת לספריות של צד שלישי ולספק ערכים לקבועים ולפונקציות hook. סביבת זמן הריצה של Python 3 לא משתמשת בקובץ הזה.
מתבצע עדכון של app.yaml
ההתנהגות של חלק מהשדות בקובץ התצורה של app.yaml השתנתה. צריך להסיר שדות שכבר לא נתמכים ולעדכן שדות אחרים כמו שמתואר בטבלה הבאה.
| שדה | שינוי הסוג | תיאור |
|---|---|---|
| app_engine_apis | רלוונטי רק ל-Python 3 | חובה להגדיר את הערך true אם רוצים לגשת אל שירותים מדור קודם שכלולים בחבילה ל-Python 3. |
| api_version application_readable builtins |
אין יותר תמיכה | לא רלוונטי בסביבת זמן הריצה של Python 3. |
| threadsafe | אין יותר תמיכה בגרסה הזו | כל האפליקציות נחשבות בטוחות לשימוש בריבוי תהליכים. אם האפליקציה שלכם לא בטוחה לשימוש עם שרשורים, צריך לציין entrypoint כדי להגדיר שרשור אחד לכל עובד.לדוגמה, כשמשתמשים בסוג האינסטנס F4: entrypoint: gunicorn -b :$PORT -w 8 --threads 1 main:appבמאמר שיטות מומלצות לנקודות כניסה מפורט מספר העובדים המומלץ לכל סוג אינסטנס. |
| ספריות | אין יותר תמיכה בגרסה הזו |
משתמשים בקובץ requirements.txt כדי להצהיר על יחסי תלות ולהתקין ספריות לקוח.
|
| handlers: login | נתמך אם app_engine_apis הוא true |
אם אתם לא משתמשים בחבילת השירותים מדור קודם ל-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_apis: true
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.