Troubleshooting Guide
שגיאות נפוצות
ModuleNotFoundError: No module named 'telegram'התקן תלויות:
pip install -r requirements/production.txt
ServerSelectionTimeoutError: No servers availableבדוק שה‑MongoDB רץ
אמת את
MONGODB_URLב‑.envאם Atlas – בדוק Network Access (IP Allowlist)
Telegram API Error: Conflict: terminated by other getUpdatesיש instance נוסף שרץ:
pkill -f "python main.py"והמתן 30 שניות
Message is not modifiedעטוף עריכה ב‑wrapper שמתעלם משגיאה זו בלבד
ImportError בזמן טסטים (telegram / ConversationHandler / filters)
ודאו שה‑stubs נטענים אוטומטית דרך
tests/conftest.py:
import tests._telegram_stubs # noqa
שגיאות parse_mode
שמרו אחידות: העדיפו
ParseMode=HTMLעבור הודעות מעוצבות, והימנעו מערבוב עם Markdown באותן הודעות.
ETag לא מתעדכן / תמיד 200ודא שה‑
ETagמחושב על גרסת התוכן בלבד (לא על שדות משתנים)צירוף
ETagו‑Last-Modifiedגם בתשובת200וגם ב‑304
שגיאות asyncio: ”attached to a different loop“ / ”Event loop is closed“
מקור נפוץ: סשן aiohttp משותף שנוצר בלולאה אחת ומשתמשים בו אחרי שהלולאה נסגרה או הוחלפה (בטסטים/ריסטארט חם).
פתרון מהיר: סגרו את הסשן וקבלו חדש לפני השימוש הבא:
import http_async await http_async.close_session() session = http_async.get_session()
בפרויקט קיימים שני פיקסצ’רים אוטומטיים ב-
conftest.pyשמבצעים את הסגירה הזו עבורך: -_reset_http_async_session_between_tests– מריץawait close_session()לפני ואחרי כל טסט אסינכרוני. -_ensure_http_async_session_closed_for_sync_tests– עוטף טסטים סינכרוניים שמריציםasyncio.runודואג לקרוא ל-close_session()גם שם (כולל יצירת event loop זמני לפי הצורך). ודא שהפיקסצ’רים נשארים פעילים (אל תעקוף אותם עםusefixturesידני).טסטים שמייצרים
CodeImageGeneratorלשימוש ב-Playwright/WeasyPrint חייבים לקרואgen.cleanup()בסוף כדי לעצור את ה-Runner הפנימי; אחרת תראה את אותה שגיאה שלRunner.run().עבור מסלולי bulk כמו
/image_allעדיף למחזר מופע יחיד שלCodeImageGeneratorלאורך כל הלולאה ולהתאים לו Style/Theme/Font עםconfigure(או יצירה מחדש אם המתודה לא קיימת). כך מקבלים קריאה אחת בלבד ל-cleanupבסוף ומונעים הצטברות אובייקטים כבדים/תהליכי Playwright זומבים.
Timezone naive/aware גורם להשוואות שגויותודא ש‑
created_atו‑updated_atהם timezone-aware ב‑UTCהשוו שניות שלמות (ללא microseconds) מול
If-Modified-Since
שאילתא איטית / COLLSCANחסר אינדקס מתאים. בדוק MongoDB Indexing Cookbook והוסף אינדקס מרוכב
אמת ב‑
explain('executionStats')שהשלב הואIXSCANולאCOLLSCAN
דפדוף מדלג/כפול פריטיםודא מיון יציב לפי
created_atו‑_idיחדהשתמשו בתבנית הקורסור מ‑Cursor-based Pagination (created_at / _id)
SRI mismatch בטעינת משאב מ‑CDNחשבו hash מחדש עם
openssl dgst -sha384 -binary | base64עדכנו את ערך
integrity=...וודאוcrossorigin="anonymous"ראו Static Performance & Security Checklist (gzip/br, Cache, SRI)
דיבוג מהיר
LOG_LEVEL=DEBUG python main.py
בדיקת חיבור MongoDB
from database.manager import DatabaseManager
db = DatabaseManager()
print('Connected!' if db.test_connection() else 'Failed')