Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -116,6 +116,22 @@ class SessionManager:
|
|
| 116 |
except Exception as e:
|
| 117 |
logger.warning(f"Error during final session cleanup: {e}")
|
| 118 |
self._session = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
# --- Enhanced Data Models ---
|
| 120 |
|
| 121 |
class StockDataRequest(BaseModel):
|
|
|
|
| 116 |
except Exception as e:
|
| 117 |
logger.warning(f"Error during final session cleanup: {e}")
|
| 118 |
self._session = None
|
| 119 |
+
|
| 120 |
+
# Global session manager per event loop to handle multiple threads/loops
|
| 121 |
+
_session_managers = weakref.WeakKeyDictionary()
|
| 122 |
+
|
| 123 |
+
def get_session_manager():
|
| 124 |
+
"""Get or create session manager for current event loop."""
|
| 125 |
+
try:
|
| 126 |
+
loop = asyncio.get_running_loop()
|
| 127 |
+
if loop not in _session_managers:
|
| 128 |
+
_session_managers[loop] = SessionManager()
|
| 129 |
+
logger.debug(f"📝 Created new SessionManager for event loop {id(loop)}")
|
| 130 |
+
return _session_managers[loop]
|
| 131 |
+
except RuntimeError:
|
| 132 |
+
# No event loop running
|
| 133 |
+
logger.warning("⚠️ No event loop running, cannot get session manager.")
|
| 134 |
+
return None
|
| 135 |
# --- Enhanced Data Models ---
|
| 136 |
|
| 137 |
class StockDataRequest(BaseModel):
|