perf: optimize system concurrency, I/O stability and fix WebSocket disconnects
This commit is contained in:
@@ -7,6 +7,7 @@ Handles reading/writing dashboard JSON files and portfolio state
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import time
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, List, Optional
|
||||
@@ -950,11 +951,14 @@ class StorageService:
|
||||
|
||||
def save_server_state(self, state: Dict[str, Any]):
|
||||
"""
|
||||
Save server state to file
|
||||
|
||||
Args:
|
||||
state: Server state dictionary
|
||||
Save server state to file with rate-limiting to avoid I/O storms.
|
||||
"""
|
||||
now = time.time()
|
||||
# Ensure at least 2 seconds between physical disk writes
|
||||
if hasattr(self, "_last_save_time") and (now - self._last_save_time) < 2.0:
|
||||
return
|
||||
self._last_save_time = now
|
||||
|
||||
state_to_save = {
|
||||
**state,
|
||||
"last_saved": datetime.now().isoformat(),
|
||||
@@ -970,14 +974,17 @@ class StorageService:
|
||||
if "trades" in state_to_save:
|
||||
state_to_save["trades"] = state_to_save["trades"][:100]
|
||||
|
||||
with open(self.server_state_file, "w", encoding="utf-8") as f:
|
||||
json.dump(
|
||||
state_to_save,
|
||||
f,
|
||||
ensure_ascii=False,
|
||||
indent=2,
|
||||
default=str,
|
||||
)
|
||||
try:
|
||||
with open(self.server_state_file, "w", encoding="utf-8") as f:
|
||||
# Removed indent=2 to minimize file size and serialization overhead
|
||||
json.dump(
|
||||
state_to_save,
|
||||
f,
|
||||
ensure_ascii=False,
|
||||
default=str,
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to save server state: {e}")
|
||||
|
||||
logger.debug(f"Server state saved to: {self.server_state_file}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user