fmartinou / tydom2mqtt

Deltadore Tydom to MQTT Bridge
https://fmartinou.github.io/tydom2mqtt/
MIT License
98 stars 57 forks source link

Crash du module - exception=NameError("name 'websockets' is not defined") #132

Open gerardlemetayerc opened 1 year ago

gerardlemetayerc commented 1 year ago

Hello,

Dans mon environnement j'ai l'application qui plante au bout de 5-10 minutes de fonctionnement. Je soupçonne un problème de timeout quelque part qui génère l'entrée dans l'exception gérée en ligne 56 de : https://github.com/fmartinou/tydom2mqtt/blob/60115dcca87aaee89d6e34d4eb4e037895a0a931/app/main.py#L56

L'exception levée en revanche indiquerait que websockets n'est pas importé dans main.py (ce qui n'est pas faux).

Ce que j'ai comme erreur :

2023-09-02 16:39:17,073 - asyncio              - ERROR   - Task exception was never retrieved
future: <Task finished name='Task-2' coro=<listen_tydom() done, defined at /app/main.py:41> exception=NameError("name 'websockets' is not defined")>
Traceback (most recent call last):
  File "/app/main.py", line 49, in listen_tydom
    incoming_bytes_str = await tydom_client.connection.recv()
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/websockets/legacy/protocol.py", line 568, in recv
    await self.ensure_open()
  File "/usr/local/lib/python3.11/site-packages/websockets/legacy/protocol.py", line 944, in ensure_open
    raise self.connection_closed_exc()
websockets.exceptions.ConnectionClosedOK: received 1000 (OK); then sent 1000 (OK)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/app/main.py", line 56, in listen_tydom
    except websockets.ConnectionClosed as e:
           ^^^^^^^^^^
NameError: name 'websockets' is not defined

Un premier correctif pour éviter le plantage serait d'ajouter l'import de websockets dans le fichier.

import websockets
# Et pourquoi pas
import websockets as ws
[...]
except ws.ConnectionClosed as e:
    logger.error("Websocket connection closed: %s", e)

Bon après je pense que ça ne corrigera pas le problème de timeout, mais au moins ça évitera l'exception sévère. :)

A plus!

P.S : concerne potentiellement #128 et #104.

WeftWiki commented 1 year ago

J'ai exactement le même problème, c'est assez gênant car le module plante plusieurs fois par jour et m'oblige à le redémarrer manuellement

MaksOuw commented 1 year ago

Même problème pour moi, j'utilise l'image Docker sur un raspberry pi 4 sous ubuntu server 20.10