Mercurial > libervia-web
diff libervia/server/server.py @ 1367:ce5cfe004d4e
server: new `--bridge-retries` option:
If bridge connection fails, it will be retried for the specified number of time (default
to 10) before giving up. Each try is spaced by 1 second.
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 20 Nov 2020 18:02:43 +0100 |
parents | 10517a8698ca |
children | 9624c2a89a92 |
line wrap: on
line diff
--- a/libervia/server/server.py Fri Nov 20 17:55:21 2020 +0100 +++ b/libervia/server/server.py Fri Nov 20 18:02:43 2020 +0100 @@ -834,6 +834,7 @@ self.ns_map = {} # map of short name to namespaces ## bridge ## + self._bridge_retry = self.options['bridge-retries'] self.bridge = Bridge() self.bridge.bridgeConnect(callback=self._bridgeCb, errback=self._bridgeEb) @@ -1207,6 +1208,7 @@ self.site.sessionFactory = LiberviaSession def _bridgeCb(self): + del self._bridge_retry self.bridge.getReady( lambda: self.initialised.callback(None), lambda failure: self.initialised.errback(Exception(failure)), @@ -1215,6 +1217,22 @@ def _bridgeEb(self, failure_): if isinstance(failure_, BridgeExceptionNoService): + if self._bridge_retry: + if self._bridge_retry < 0: + print(_("Can't connect to bridge, will retry indefinitely. " + "Next try in 1s.")) + else: + self._bridge_retry -= 1 + print( + _( + "Can't connect to bridge, will retry in 1 s ({retries_left} " + "trie(s) left)." + ).format(retries_left=self._bridge_retry) + ) + time.sleep(1) + self.bridge.bridgeConnect(callback=self._bridgeCb, errback=self._bridgeEb) + return + print("Can't connect to SàT backend, are you sure it's launched ?") else: log.error("Can't connect to bridge: {}".format(failure))