Update waterfurnace library to 0.7, add reconnect logic#15657
Update waterfurnace library to 0.7, add reconnect logic#15657sdague merged 1 commit intohome-assistant:devfrom
Conversation
One of the features of the waterfurnace 0.7 is timingout out stuck connections on the websocket (which tends to happen after 48 - 96 hours of operation). This requires the homeassistant component to catch and reconnect under these circumstances. This has turned out to be pretty robust in preventing stuck sockets over the last month.
| self._shutdown = False | ||
| self._fails = 0 | ||
|
|
||
| def _reconnect(self): |
There was a problem hiding this comment.
Do you think that this kind of logic should be moved into the waterfurnace lib as it might be useful for other users of the lib too?
There was a problem hiding this comment.
It's possible. I get a little concerned when libraries put all their own retry logic under the cover as they may not understand a larger symptom of what is going on that they should stop.
If you want I can move it down to the lower layer.
There was a problem hiding this comment.
Well if the lib would expose both, a raw connection and a managed connection, it could work.
I'm fine either way. You pick.
There was a problem hiding this comment.
Oh, apparently I never hit submit on my comments. For now I'd like to merge this and get back into the mix.
One of the features of the waterfurnace 0.7 is timingout out stuck
connections on the websocket (which tends to happen after 48 - 96
hours of operation). This requires the homeassistant component to
catch and reconnect under these circumstances. This has turned out to
be pretty robust in preventing stuck sockets over the last month.
Checklist:
tox. Your PR cannot be merged unless tests passIf user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
REQUIREMENTSvariable ([example][ex-requir]).requirements_all.txtby runningscript/gen_requirements_all.py..coveragerc.If the code does not interact with devices: