Spaces:
Running
Running
| import asyncio | |
| import time | |
| # حالة السوق العامة | |
| MARKET_STATE_OK = True | |
| class StateManager: | |
| def __init__(self): | |
| self.market_analysis_lock = asyncio.Lock() | |
| self.trade_analysis_lock = asyncio.Lock() | |
| self.data_processing_lock = asyncio.Lock() | |
| self.initialization_complete = False | |
| self.services_initialized = { | |
| 'r2_service': False, | |
| 'data_manager': False, | |
| 'llm_service': False, | |
| 'learning_engine': False, | |
| 'trade_manager': False, | |
| 'sentiment_analyzer': False | |
| } | |
| self.service_errors = {} | |
| self.last_health_check = time.time() | |
| async def wait_for_initialization(self, timeout=30): | |
| """انتظار اكتمال تهيئة الخدمات""" | |
| start_time = time.time() | |
| while not self.initialization_complete and (time.time() - start_time) < timeout: | |
| await asyncio.sleep(1) | |
| return self.initialization_complete | |
| def set_service_initialized(self, service_name): | |
| """تعيين خدمة كمهيأة""" | |
| self.services_initialized[service_name] = True | |
| if all(self.services_initialized.values()): | |
| self.initialization_complete = True | |
| print("🎯 جميع الخدمات مهيأة بالكامل") | |
| def set_service_error(self, service_name, error): | |
| """تسجيل خطأ في الخدمة""" | |
| self.service_errors[service_name] = { | |
| 'error': error, | |
| 'timestamp': time.time() | |
| } | |
| print(f"❌ خطأ في الخدمة {service_name}: {error}") | |
| def get_service_health(self, service_name): | |
| """الحصول على صحة الخدمة""" | |
| if service_name not in self.services_initialized: | |
| return {'status': 'unknown', 'initialized': False} | |
| return { | |
| 'status': 'healthy' if service_name not in self.service_errors else 'error', | |
| 'initialized': self.services_initialized[service_name], | |
| 'last_error': self.service_errors.get(service_name) | |
| } | |
| def get_overall_health(self): | |
| """الحصول على الصحة العامة للنظام""" | |
| initialized_services = sum(self.services_initialized.values()) | |
| total_services = len(self.services_initialized) | |
| error_services = len(self.service_errors) | |
| return { | |
| 'initialization_complete': self.initialization_complete, | |
| 'initialized_services': f"{initialized_services}/{total_services}", | |
| 'services_with_errors': error_services, | |
| 'all_services_healthy': self.initialization_complete and error_services == 0, | |
| 'last_health_check': self.last_health_check | |
| } | |
| async def acquire_market_lock(self): | |
| """الحصول على قفل تحليل السوق""" | |
| return await self.market_analysis_lock.acquire() | |
| def release_market_lock(self): | |
| """تحرير قفل تحليل السوق""" | |
| if self.market_analysis_lock.locked(): | |
| self.market_analysis_lock.release() | |
| async def acquire_trade_lock(self): | |
| """الحصول على قفل تحليل الصفقات""" | |
| return await self.trade_analysis_lock.acquire() | |
| def release_trade_lock(self): | |
| """تحرير قفل تحليل الصفقات""" | |
| if self.trade_analysis_lock.locked(): | |
| self.trade_analysis_lock.release() | |
| async def acquire_data_lock(self): | |
| """الحصول على قفل معالجة البيانات""" | |
| return await self.data_processing_lock.acquire() | |
| def release_data_lock(self): | |
| """تحرير قفل معالجة البيانات""" | |
| if self.data_processing_lock.locked(): | |
| self.data_processing_lock.release() | |
| # إنشاء نسخة عامة من StateManager | |
| state_manager = StateManager() |