משך: 2 שעות אקדמיות (90 דקות).

מטרת השיעור: הסטודנטים יתזמנו סקריפט ETL אוטומטי עם לוגים מובנים, כהכנה לפרויקט המסכם.

בסוף השיעור הסטודנטים צריכים: לכתוב תחביר cron בסיסי, להשתמש ב-APScheduler מתוך קוד, ולהוסיף structured logging לסקריפט קיים.

דגש קריטי: הדגישו שהרצה אוטומטית בלי לוגים היא “כישלון שקוף” — קשרו לחוויה מוכרת: דוח שאמור היה לרוץ בלילה ולא רץ, ואף אחד לא ידע עד הבוקר.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותשאלו: “איך מריצים סקריפט כל יום ב-2 בלילה בלי לקום?”
הרעיון: cron20 דקותתחביר 5 שדות, דוגמאות
הרעיון: APScheduler15 דקותחלופה בתוך קוד פייתון
הבעיה: כישלון שקט10 דקותprint בלילה שאף אחד לא רואה
הרעיון: Structured Logging25 דקותרמות חומרה, קישרו ל-Additions ב-C#
תרגול מודרך15 דקותתרגיל 1+2

דגשים להעברת השיעור

  • קשרו Structured Logging במפורש ליחידת ה-Additions ב-C# (אם כבר נלמדה, או כרמז קדימה) — אותו רעיון, שפה אחרת.
  • תחביר cron שווה תרגול חוזר-ונשנה על הלוח — 5 השדות מבלבלים בהתחלה, כדאי כמה דוגמאות שונות (כל שעה, כל יום מסוים, כל יום בשבוע מסוים).
  • הדגישו: המטרה של logging כאן היא לא “עוד תיעוד” — היא אבחון אמיתי של מה קרה בהרצה שאף אחד לא צפה בה בזמן אמת.

מושגים

cron — מתזמן ברמת מערכת ההפעלה. APScheduler — תזמון מתוך קוד פייתון. Structured Logging — לוגים עם רמות חומרה.


תרגיל חשיבה

שאלת פתיחה: “סקריפט ה-ETL שלכם רץ כל לילה ב-02:00 עם cron. בבוקר אתם מגלים שהדוח היומי חסר. בלי לוגים, איך הייתם מתחילים לחקור מה קרה?”

מהלך: הובילו לתובנה: בלי לוגים, אין שום עקבות — צריך “לנחש” ולהריץ שוב ידנית כדי לנסות לשחזר את הבעיה, בזמן שהתקלה המקורית כבר “נעלמה”. עם לוגים, פותחים את etl.log, מוצאים בדיוק את שורת ה-error מהלילה, ורואים מיד מה נכשל ומתי.

מה המרצה מראה בסוף: הריצו סקריפט ETL עם כישלון מכוון (URL שגוי), פעם בלי logging (רק print שאבד/לא נראה) ופעם עם logging מלא — פתחו את קובץ הלוג בסוף והראו את שורת ה-error המדויקת, כולל timestamp וטקסט השגיאה — ההבדל בין “לא יודעים כלום” ל"יודעים בדיוק מה קרה ומתי".