במדריך הזה נסביר איך לדווח על חריגים שלא נתפסו ולעקוב אחריהם במדריך תחילת העבודה עם Python באמצעות Google Cloud מסוף.
Error Reporting מספק מרכז בקרה שבו מוצגים ספירות של כל שגיאה ייחודית, עקבות מחסנית והיסטוריה של מקרים. אפשר גם להגדיר התראה שתתקבל כשמתרחשות שגיאות.
הדף הזה הוא חלק ממדריך רב-שלבי. כדי להתחיל מההתחלה ולקרוא את הוראות ההגדרה, אפשר לעיין במאמר תחילת העבודה עם Python.
קביעת ההגדרות
בקטע הזה נעשה שימוש בקוד בספרייה 5-logging. עורכים את הקבצים ומריצים פקודות בספרייה הזו.
-
פותחים את הקובץ
config.pyלעריכה ומחליפים את הערכים הבאים: -
מגדירים את הערך של
[PROJECT_ID]למזהה הפרויקט, שמופיע במסוף Google Cloud . -
מגדירים את הערך של
[DATA_BACKEND]לאותו ערך שבו השתמשתם במדריך בנושא שימוש בנתונים מובְנים. -
אם אתם משתמשים ב-Cloud SQL או ב-MongoDB, צריך להגדיר את הערכים בקטע
Cloud SQLאוMongoלאותם ערכים שבהם השתמשתם בשלב שימוש בנתונים מובנים. -
מגדירים את הערך של
[CLOUD_STORAGE_BUCKET]לשם הקטגוריה שלכם ב-Cloud Storage. -
בקטע
OAuth2 configuration, מגדירים את הערכים של[GOOGLE_OAUTH2_CLIENT_ID]ושל[GOOGLE_OAUTH2_CLIENT_SECRET]למזהה הלקוח ולסוד של האפליקציה שיצרתם קודם. -
שומרים את קובץ ה-
config.pyוסוגרים אותו.
אם אתם משתמשים ב-Cloud SQL:
-
פותחים את הקובץ
app.yamlלעריכה. -
מגדירים את הערך של
cloudsql-instanceלאותו ערך שמשמש ל-[CLOUDSQL_CONNECTION_NAME]בקובץconfig.py. בפורמטproject:region:cloudsql-instance. לבטל סימון כהערה של כל השורה. -
שומרים את קובץ ה-
app.yamlוסוגרים אותו.
יחסי תלות בהתקנות
כדי ליצור סביבה וירטואלית ולהתקין תלויות, משתמשים בפקודות הבאות:
Linux/macOS
virtualenv -p python3 env
source env/bin/activate
pip install -r requirements.txt
Windows
virtualenv -p python3 env
env\scripts\activate
pip install -r requirements.txt
הפעלת האפליקציה במחשב המקומי
מפעילים שרת אינטרנט מקומי:
python main.pyבדפדפן, מזינים את הכתובת הבאה:
http://localhost:8080
מקישים על Control+C כדי לצאת מה-worker ואז משרת האינטרנט המקומי.
פריסת האפליקציה בסביבה הגמישה של App Engine
מפעילים את האפליקציה לדוגמה:
gcloud app deployבדפדפן, מזינים את כתובת ה-URL הבאה:
https://PROJECT_ID.REGION_ID.r.appspot.comמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
REGION_ID: קוד שמוקצה לאפליקציה על ידי App Engine
-
אם מעדכנים את האפליקציה, מפעילים את הגרסה המעודכנת על ידי הזנת אותה פקודה שבה השתמשתם כדי להפעיל את האפליקציה. ההפעלה יוצרת גרסה חדשה של האפליקציה ומקדם אותה לגרסת ברירת המחדל. הגרסאות הקודמות של האפליקציה נשארות, וכך גם המכונות הווירטואליות (VM) שמשויכות אליהן. כל הגרסאות של האפליקציה וכל מופעי מכונות וירטואליות הם משאבים שחלים עליהם חיובים. כדי להפחית את העלויות, מוחקים את הגרסאות של האפליקציה שלא מוגדרות כברירת מחדל.
כדי למחוק גרסת אפליקציה:
- במסוף Google Cloud , נכנסים לדף Versions של App Engine.
- מסמנים את התיבה שלצד גרסת האפליקציה שלא מוגדרת כברירת מחדל ושרוצים למחוק.
- כדי למחוק את גרסת האפליקציה, לוחצים על Delete.
מידע נוסף על ניקוי משאבים שניתנים לחיוב זמין בקטע ניקוי בשלב האחרון של המדריך הזה.
סימולציה של שגיאה
כדי לראות את הדוחות על שגיאות בפעולה, אפשר להוסיף בכוונה שגיאה לקוד ואז לחפש את החריגה בדף הדוחות על שגיאות במסוף. Google Cloud
ב-
bookshelf/crud.py, מוסיפים פעולה שמגשת משתנה לא מוגדר ומפיקהReferenceErrorבתצוגת האינדקס.@crud.route("/") def list(): x[3]
פורסים את האפליקציה.
gcloud app deploy
נכנסים לדף האינדקס.
gcloud app browse
אפשר לראות את ההודעה
An internal error occurred.-
נכנסים לדף Error Reporting במסוף Google Cloud :
אפשר גם להשתמש בסרגל החיפוש כדי למצוא את הדף הזה.
השגיאה תופיע ברשימה.
לוחצים על השגיאה כדי לראות מידע עליה, כמו מתי היא נצפתה לאחרונה, כמה פעמים היא התרחשה, היסטוגרמה של זמני ההתרחשות ופרטי דוח הקריסות.
הסבר על הקוד
כדי לדווח על חריגים שלא נתפסו, הקוד משתמש קודם ב-decorator של Flask errorhandler, ואז מדווח על החריג ל-Error Reporting באמצעות ספריות הלקוח של Cloud ל-Python.
הלקוח מוסיף באופן אוטומטי את פרטי המעקב אחר שגיאות ומשתמש בפונקציית עזר כדי לחלץ את פרטי הבקשה הרלוונטיים מבקשת Flask, וכך מאכלס את Error Reporting בדוחות קריסה רלוונטיים ובהקשרים של HTTP לכל חריגה שלא נתפסה InternalServerError HTTP 500 באפליקציה.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.