Trad / state.py
Riy777's picture
Update state.py
f047b93
raw
history blame
3.91 kB
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()