אחרי הפעלת זרימת עבודה, אפשר לגשת לתוצאות של הפעלת זרימת העבודה במסוף Google Cloud או באמצעות Google Cloud CLI.
המסוף
נכנסים לדף Workflows במסוף Google Cloud .
כדי לגשת לתוצאות ההרצה של זרימת עבודה, לוחצים על שם זרימת העבודה כדי לעבור לדף פרטי זרימת העבודה.
כדי לראות פרטים על הפעלה מסוימת, בכרטיסייה הפעלות, לוחצים על מזהה ההפעלה ברשימה כדי לעבור לדף פרטי ההפעלה.
בכרטיסייה סיכום, כל הרצה כוללת את הפרטים הבאים:
- Execution ID: המזהה הייחודי של הרצת תהליך העבודה.
- מצב הביצוע: מציין את מצב הסיום של תהליך העבודה, כולל השלב הנוכחי או הסופי בתהליך העבודה.
- ההפעלה נוצרה: מתי ההפעלה התחילה.
- תחילת הביצוע: מתי הביצוע התחיל לפעול ולבצע את השלבים.
- סיום ההרצה: מתי ההרצה הסתיימה.
- משך הביצוע: הזמן הכולל שחלף. יכול להיות שזו אינדיקציה לשגיאות ברשת או לבעיות בקישוריות.
- שם תהליך העבודה: השם של תהליך העבודה.
- גרסת תהליך העבודה: הגרסה הנוכחית בזמן ההרצה.
- רמת יומן השיחות: הרמה של רישום השיחות ביומן שחלה במהלך ההפעלה. מידע נוסף זמין במאמר בנושא רישום שיחות ביומן.
- קלט: הארגומנטים של זמן הריצה שמועברים לתהליך העבודה, אם יש כאלה.
- פלט: הפלט של תהליך העבודה. אם ההרצה נכשלה, התג כולל את החריגה שהובילה לכשל בהרצה. במסמך הזה, ראו מפות של שגיאות הפעלה.
כדי לראות את היסטוריית ההרצה של תהליך העבודה כרשימה של רשומות שלבים, לוחצים על הכרטיסייה Steps (שלבים). מידע נוסף זמין במאמר בנושא הצגת ההיסטוריה של שלבי ההרצה.
כדי לראות את היומנים של הרצת תהליך עבודה, לוחצים על הכרטיסייה Logs (יומנים).
כדי לסנן את יומני ההפעלה, משתמשים בשדה Filter בחלק העליון של הטבלה. לדוגמה, כדי להציג רק ניסיונות ביצוע שנכשלו, מזינים
failedבשדה הטקסט של המסנן.
gcloud
כדי לראות את הרשימה המלאה של ההרצות של זרימת עבודה, מזינים את הפקודה הבאה:
gcloud workflows executions list WORKFLOW_NAMEמחליפים את
WORKFLOW_NAMEבשם של זרימת העבודה. מעתיקים את מזהה ההרצה של ההרצה שרוצים.כדי להציג את יומני הביצוע של זרימת עבודה, מזינים את הפקודה הבאה:
gcloud workflows executions describe \ --workflow=WORKFLOW_NAME \ EXECUTION_IDמחליפים את מה שכתוב בשדות הבאים:
-
WORKFLOW_NAME: השם של תהליך העבודה -
EXECUTION_ID: המזהה הייחודי של ההפעלה
הפלט של הפקודה אמור להיראות כך:
הפלט מכיל את המידע הבא:argument: 'null' endTime: '2022-07-19T12:40:07.070039707Z' error: context: |- The argument of 'in' must be a dict or an array; got: null in step "checkSearchTermInInput", routine "main", line: 12 payload: "{"message":"The argument of 'in' must be a dict or an array; got: null"
,"tags":["TypeError"]}" stackTrace: elements: - position: column: '26' length: '24' line: '12' routine: main step: checkSearchTermInInput name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/17ffc89c-0a27-4d2f-8356-e681d949a3d3 startTime: '2022-07-19T12:40:07.024823663Z' state: FAILED status: currentSteps: - routine: main step: checkSearchTermInInput workflowRevisionId: 000001-ac2-
argument: הארגומנטים של זמן הריצה שמועברים לתהליך העבודה, אם יש כאלה -
endTime: מתי ההרצה הסתיימה -
error: הודעת השגיאה שמוצגת כחלק מהחריגה שגרמה לביצוע להיכשל -
name: השם המלא של ההרצה, כולל שם הפרויקט, המיקום של תהליך העבודה, השם של תהליך העבודה ומזהה ההרצה -
startTime: מתי ההפעלה התחילה -
state: מציין את מצב הסיום של תהליך העבודה -
status: השלב הנוכחי או הסופי בתהליך העבודה של ההפעלה -
workflowRevisionID: הגרסה הנוכחית בזמן ההרצה
-
מפות של שגיאות ביצוע
אם תהליך עבודה מעלה שגיאה במהלך הביצוע שלא נתפסת בבלוק try/except, הביצוע נכשל ומוחזרת מפת שגיאות (מילון JSON) שמתארת את השגיאה.
שגיאות שמוצגות במהלך הביצוע של תהליך העבודה מכילות תגים שעוזרים לכם לזהות את הגורם לשגיאה. לדוגמה, השגיאה שמוחזרת ממחבר יכולה לכלול שני מפתחות (tags ו-message) בדומה למה שמוצג כאן:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
יכול להיות שיש יותר מתג אחד. כדי לחפש תג ספציפי, אפשר להשתמש בביטוי. לדוגמה:
${'SystemError' in e.tags}
נתוני שגיאות גישה שמוחזרים כמחרוזת
חלק מהמחברים ומממשקי ה-API של HTTP יבצעו סריאליזציה של שגיאות כמחרוזות לפני שיחזירו את השגיאות. אפשר להשתמש בפונקציות של ספרייה רגילה כדי לשחזר מטען ייעודי (payload) לשגיאה המקורית. לדוגמה, כדי להמיר מחרוזת שגיאה למפה, אפשר להשתמש בפונקציות json.decode ו-text.encode:
json.decode(text.encode(ERROR_FROM_API))
תגי שגיאה
בטבלה הבאה מוסבר מה המשמעות של תגי שגיאה שונים.
| תג | תיאור |
|---|---|
| AuthError | השגיאה הזו מופיעה כשניסיון ליצור פרטי כניסה לבקשת HTTP נכשל. |
| ConnectionError | השגיאה הזו מופיעה כשנוצר חיבור עם נקודת הקצה, אבל יש בעיה בחיבור במהלך העברת הנתונים. החיבור מסתיים לפני שמתקבלת תגובה מלאה, ויכול להיות שההודעה לא נמסרה לנקודת הקצה. יכול להיות שניסיונות חוזרים לא יהיו אידמפוטנטיים. |
| ConnectionFailedError | השגיאה הזו מופיעה כשלא נוצר חיבור לנקודת קצה ל-API. לדוגמה, בגלל שם דומיין שגוי, בעיות בפענוח DNS או בעיות אחרות ברשת. ניסיונות חוזרים הם אידמפוטנטיים. |
| HttpError | השגיאה הזו מופיעה כשבקשת HTTP נכשלת עם סטטוס שגיאת HTTP. כשחריגה כזו מתרחשת, התגובה היא מפה עם הרכיבים הבאים:
|
| IndexError | השגיאה הזו מתרחשת כשמציינים מספר שלם מחוץ לטווח כמנוי של רצף. |
| KeyError | השגיאה הזו מופיעה כשמפתח של מיפוי לא נמצא בקבוצת המפתחות הקיימים. |
| OperationError | האירוע הזה מופעל כשפעולה ממושכת מסתיימת ללא הצלחה. |
| ParallelNestingError | השגיאה הזו מופיעה כשחורגים מהעומק המקסימלי שאפשר לקנן בו שלבים מקבילים. |
| RecursionError | השגיאה הזו מופיעה כשהמפענח מזהה חריגה מ <0x000A> העומק המקסימלי של סטאק ביצוע. |
| ResourceLimitError | השגיאה הזו מופיעה כשמגיעים למגבלת משאבים מסוימת. כשמעלים את השגיאה הזו באופן פנימי, אי אפשר לזהות אותה והיא גורמת לכשל מיידי בהרצה. |
| ResponseTypeError | מופעלת כשפעולה ממושכת מחזירה תגובה מהסוג הלא נכון. |
| SystemError | השגיאה הזו מופיעה כשהמתרגם מוצא שגיאה פנימית. |
| TimeoutError | מופעל כשפונקציית מערכת מגיעה לזמן קצוב לתפוגה ברמת המערכת. |
| TypeError | השגיאה מופיעה כשמחילים פעולה או פונקציה על אובייקט מסוג לא תואם. הערך המשויך הוא מחרוזת שמספקת פרטים על חוסר ההתאמה בין הסוגים. |
| UnhandledBranchError | השגיאה הזו מופיעה כשבסניף אחד או יותר או באיטרציה אחת או יותר מתרחשת שגיאת זמן ריצה שלא טופלה, עד מספר מקסימלי. |
| ValueError | השגיאה הזו מופיעה כשפעולה או פונקציה מקבלות ארגומנט עם סוג נכון אבל ערך שגוי, והמצב לא מתואר על ידי חריגה מדויקת יותר, כמו IndexError. |
| ZeroDivisionError | מופעל כשהארגומנט השני של פעולת חילוק או מודולו הוא אפס. הערך המשויך הוא מחרוזת שמציינת את סוג האופרנדים והפעולה. |
אפשר גם להעלות שגיאות בהתאמה אישית באמצעות התחביר raise.
המאמרים הבאים
- סקירה כללית בנושא ניפוי באגים
- בעיות מוכרות ב-Workflows
- שליחת יומני ביצוע אל Cloud Logging
- פתרון בעיות