Riy777 commited on
Commit
60c8394
·
verified ·
1 Parent(s): efc603a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -14
app.py CHANGED
@@ -58,7 +58,7 @@ class MedicalLabBot:
58
  self.load_all_materials()
59
 
60
  async def initialize_application(self):
61
- """تهيئة تطبيق التليجرام بشكل غير متزامن"""
62
  try:
63
  if not self.application:
64
  logger.info("🔄 جاري تهيئة تطبيق التليجرام...")
@@ -70,16 +70,35 @@ class MedicalLabBot:
70
  await self.setup_handlers()
71
 
72
  # ========== !! الحــل !! ==========
73
- # تم تعطيل السطر التالي لأنه يسبب خطأ اتصال في بيئة التشغيل
74
- # httpx.ConnectError: [Errno -5] No address associated with hostname
75
- # await self.application.initialize()
76
- # =================================
77
 
78
- self.is_initialized = True
79
- logger.info("✅ تم تهيئة كائن التطبيق والمعالجات بنجاح (تم تجاوز خطوة initialize)")
80
- return True
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  except Exception as e:
82
- logger.error(f"❌ خطأ في تهيئة التطبيق: {e}")
83
  self.is_initialized = False
84
  return False
85
 
@@ -748,11 +767,12 @@ bot = MedicalLabBot()
748
  async def on_startup():
749
  """إعداد Webhook عند بدء التشغيل"""
750
  try:
751
- # تهيئة التطبيق أولاً (بدون `initialize()`)
752
  success = await bot.initialize_application()
753
 
754
  if not success:
755
- logger.error("❌ فشل في تهيئة التطبيق الأساسي")
 
756
  return
757
 
758
  if SPACE_URL:
@@ -769,8 +789,9 @@ async def on_startup():
769
 
770
  except Exception as e:
771
  logger.error(f"❌ Error during startup (likely setting webhook): {e}")
772
- # حتى لو فشل الويب هوك، التطبيق لا يزال مهيأ
773
- bot.is_initialized = True # لكنه لن يستقبل تحديثات
 
774
 
775
  @app.get("/", response_class=HTMLResponse)
776
  async def root():
@@ -796,7 +817,7 @@ async def root():
796
  <h1>🏥 بوت المختبرات الطبية الذكي</h1>
797
  <div class="status">
798
  <h2>✅ البوت يعمل</h2>
799
- <p><strong>الحالة:</strong> {'✅ نشط ومهيأ' if bot.is_initialized else '❌ غير مهيأ'}</p>
800
  <p><strong>المواد المحملة:</strong> {materials_count} مادة</p>
801
  <p><strong>إجمالي ال��لفات:</strong> {total_files} ملف</p>
802
  </div>
 
58
  self.load_all_materials()
59
 
60
  async def initialize_application(self):
61
+ """تهيئة تطبيق التليجرام بشكل غير متزامن مع محاولات إعادة"""
62
  try:
63
  if not self.application:
64
  logger.info("🔄 جاري تهيئة تطبيق التليجرام...")
 
70
  await self.setup_handlers()
71
 
72
  # ========== !! الحــل !! ==========
73
+ # إعادة تفعيل `initialize` مع إضافة محاولات إعادة للتعامل مع أخطاء الشبكة المؤقتة
 
 
 
74
 
75
+ max_retries = 3
76
+ retry_delay = 5 # ثواني
77
+
78
+ for attempt in range(max_retries):
79
+ try:
80
+ logger.info(f"🚀 محاولة تهيئة الاتصال بـ Telegram (محاولة {attempt + 1}/{max_retries})...")
81
+ await self.application.initialize()
82
+ self.is_initialized = True
83
+ logger.info("✅ تم تهيئة تطبيق التليجرام بنجاح")
84
+ return True # نجح، اخرج من الدالة
85
+ except Exception as e:
86
+ logger.warning(f"⚠️ فشلت محاولة التهيئة {attempt + 1}: {e}")
87
+ if attempt < max_retries - 1:
88
+ logger.info(f"⏳ الانتظار {retry_delay} ثواني قبل إعادة المحاولة...")
89
+ await asyncio.sleep(retry_delay)
90
+ else:
91
+ logger.error(f"❌ فشل تهيئة التطبيق نهائياً بعد {max_retries} محاولات.")
92
+ # لا تطلق الخطأ، فقط سجل الفشل وأكمل
93
+ self.is_initialized = False
94
+ return False
95
+
96
+ # في حالة الفشل بعد كل المحاولات
97
+ self.is_initialized = False
98
+ return False
99
+
100
  except Exception as e:
101
+ logger.error(f"❌ خطأ فادح في تهيئة التطبيق: {e}")
102
  self.is_initialized = False
103
  return False
104
 
 
767
  async def on_startup():
768
  """إعداد Webhook عند بدء التشغيل"""
769
  try:
770
+ # تهيئة التطبيق أولاً (مع آلية إعادة المحاولة)
771
  success = await bot.initialize_application()
772
 
773
  if not success:
774
+ logger.error("❌ فشل في تهيئة التطبيق الأساسي بعد عدة محاولات")
775
+ # التطبيق سيعمل، لكن is_initialized ستكون False
776
  return
777
 
778
  if SPACE_URL:
 
789
 
790
  except Exception as e:
791
  logger.error(f"❌ Error during startup (likely setting webhook): {e}")
792
+ # إذا فشل الويب هوك، التطبيق لا يزال "مهيأ" من ناحية الكود
793
+ # لكنه لن يستقبل تحديثات
794
+ pass
795
 
796
  @app.get("/", response_class=HTMLResponse)
797
  async def root():
 
817
  <h1>🏥 بوت المختبرات الطبية الذكي</h1>
818
  <div class="status">
819
  <h2>✅ البوت يعمل</h2>
820
+ <p><strong>الحالة:</strong> {'✅ نشط ومهيأ' if bot.is_initialized else '❌ غير مهيأ (فشل الاتصال بـ Telegram)'}</p>
821
  <p><strong>المواد المحملة:</strong> {materials_count} مادة</p>
822
  <p><strong>إجمالي ال��لفات:</strong> {total_files} ملف</p>
823
  </div>