הכנת קובצי תצורה לסביבת זמן הריצה של Python 3

כדי להריץ את האפליקציה בסביבת זמן הריצה של 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) במקום להשתמש בשדה script.

כדי להעביר את קובץ app.yaml לסביבת ההרצה של Python 3, מבצעים אחת מהפעולות הבאות, בהתאם לשאלה אם הקובץ מכיל static handlers וגם script handlers:

  • אם קובץ app.yaml מכיל רכיבי handler סטטיים, צריך לבצע אחת מהפעולות הבאות כדי לוודא שהבקשות לתוכן דינמי מנותבות לסקריפט של האפליקציה:
    • מסירים את כל השדות script. אחר כך מוסיפים שדה entrypoint כדי להפעיל שרת אינטרנט שמריץ את האפליקציה. בקשות שלא תואמות לאף אחד מהמטפלים הסטטיים יופנו לשרת האינטרנט שצוין בשדה entrypoint. שרת האינטרנט ומסגרת האינטרנט של האפליקציה אחראים לניתוב הבקשה לסקריפט הנכון.
    • מחליפים את הערך של כל השדות script בערך auto. ‫App Engine יפעיל את האפליקציה שלכם באופן אוטומטי בשרת אינטרנט (בהנחה שהאפליקציה עומדת בכמה דרישות), וכל הבקשות שתואמות ל-script handler יופנו לשרת האינטרנט. שרת האינטרנט ומסגרת האינטרנט של האפליקציה אחראים לניתוב הבקשה לסקריפט הנכון.
    • אם קובץ app.yaml לא מכיל handlers סטטיים, צריך להסיר את כל השדות script. כל הבקשות לאפליקציה יופנו לשרת האינטרנט של האפליקציה, והמסגרת של האפליקציה תנתב את הבקשה לסקריפט הנכון. אפשר גם להוסיף את השדה entrypoint כדי להתאים אישית את התנהגות ברירת המחדל של ההפעלה. אם ל-app.yaml יש את שני סוגי ה-handler, עדיין אפשר להסיר את כל ה-handler של הסקריפט שמסומנים כ-auto, ולהשאיר את ה-handler הסטטיים וגם את ה-handler של auto שדורשים הנחיות אחרות, כמו ה-handler שמוגבל לאדמינים בדוגמה שלמטה.

הטיפול בקבצים סטטיים לא משתנה.

אם משתמשים בשדות שהוצאו משימוש, 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.