websocket connect repair
This commit is contained in:
parent
a13636ca49
commit
40c98e68d7
2 changed files with 10 additions and 6 deletions
|
|
@ -80,7 +80,7 @@ class ContainerPositionManager:
|
|||
|
||||
container_manager = ContainerPositionManager()
|
||||
|
||||
async def get_network_data(translations: Translations = Depends(get_translations())) -> Dict[str, Dict]:
|
||||
async def get_network_data(translations: Translations = None) -> Dict[str, Dict]:
|
||||
"""Возвращает текущие сетевые данные в виде словаря.
|
||||
|
||||
Получает данные о сетевых интерфейсах, разделяет их на активные и неактивные,
|
||||
|
|
@ -97,6 +97,7 @@ async def get_network_data(translations: Translations = Depends(get_translations
|
|||
Raises:
|
||||
HTTPException: Если произошла ошибка при получении данных (status_code=500).
|
||||
"""
|
||||
translations = translations or get_translations()()
|
||||
logger.debug("Calling get_network_data()")
|
||||
try:
|
||||
network_data = await network_service.get_network_interfaces_container()
|
||||
|
|
@ -151,7 +152,7 @@ def _split_interfaces(
|
|||
return activation_interfaces, deactivation_interfaces
|
||||
|
||||
@router.post("/update_container_position")
|
||||
async def update_container_position(data: Dict[str, Union[int, bool]] = Body(...), translations: Translations = Depends(get_translations())):
|
||||
async def update_container_position(data: Dict[str, Union[int, bool]] = Body(...), translations: Translations = None):
|
||||
"""Обновляет позицию и состояние контейнера.
|
||||
|
||||
Принимает данные о новом положении и состоянии контейнера и обновляет их
|
||||
|
|
@ -174,6 +175,7 @@ async def update_container_position(data: Dict[str, Union[int, bool]] = Body(...
|
|||
HTTPException: Если отсутствуют обязательные поля (status_code=400) или
|
||||
типы данных неверны.
|
||||
"""
|
||||
translations = translations or get_translations()()
|
||||
try:
|
||||
required_keys = [
|
||||
"container_id", "container_x", "container_y", "isOpen"
|
||||
|
|
|
|||
|
|
@ -101,7 +101,8 @@ async def websocket_endpoint(websocket: WebSocket, translations: Translations =
|
|||
if all(key in data for key in ["container_id", "container_x", "container_y"]):
|
||||
await update_container_position(data)
|
||||
|
||||
network_data = await get_network_data()
|
||||
# Внутренний вызов без DI, поэтому используем fallback-переводы
|
||||
network_data = await get_network_data(translations=get_translations()(websocket))
|
||||
logger.info(f"Current network data: {network_data}")
|
||||
|
||||
await manager.broadcast(network_data)
|
||||
|
|
@ -126,7 +127,7 @@ async def startup_event():
|
|||
"""
|
||||
asyncio.create_task(broadcast_data())
|
||||
|
||||
async def broadcast_data(translations: Translations = Depends(get_translations())):
|
||||
async def broadcast_data(translations: Translations = None):
|
||||
"""Таск для периодической трансляции сетевых данных.
|
||||
|
||||
Выполняет сканирование сети и отправляет данные всем подключённым клиентам
|
||||
|
|
@ -138,9 +139,10 @@ async def broadcast_data(translations: Translations = Depends(get_translations()
|
|||
Raises:
|
||||
Exception: Если произошла ошибка при получении данных или трансляции.
|
||||
"""
|
||||
translations = translations or get_translations()()
|
||||
while True:
|
||||
try:
|
||||
network_data = await get_network_data()
|
||||
network_data = await get_network_data(translations=translations)
|
||||
if "activation" not in network_data:
|
||||
logger.error(translations.gettext("Ошибка: Ключ 'activation' отсутствует в полученных данных сети"))
|
||||
await asyncio.sleep(2)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue