forked from platypush/platypush
Run register_service in a separate thread in backend.http
.
The Zeroconf registration part may randomly get stuck, resulting in the web server not being properly started. It's therefore better to run the Zeroconf registration process asynchronously, for it's not strictly required for the web server to execute.
This commit is contained in:
parent
84ce31cab0
commit
dd3c4b10c7
1 changed files with 12 additions and 2 deletions
|
@ -251,6 +251,7 @@ class HttpBackend(Backend):
|
|||
self.disable_websocket = disable_websocket
|
||||
self.websocket_thread = None
|
||||
self._websocket_loop = None
|
||||
self._service_registry_thread = None
|
||||
self.bind_address = bind_address
|
||||
|
||||
if resource_dirs:
|
||||
|
@ -328,6 +329,10 @@ class HttpBackend(Backend):
|
|||
self._websocket_loop.stop()
|
||||
self.logger.info('HTTP websocket service terminated')
|
||||
|
||||
if self._service_registry_thread and self._service_registry_thread.is_alive():
|
||||
self._service_registry_thread.join(timeout=5)
|
||||
self._service_registry_thread = None
|
||||
|
||||
def _acquire_websocket_lock(self, ws):
|
||||
try:
|
||||
acquire_ok = self._websocket_lock.acquire(
|
||||
|
@ -453,14 +458,16 @@ class HttpBackend(Backend):
|
|||
|
||||
return proc
|
||||
|
||||
def run(self):
|
||||
super().run()
|
||||
def _register_service(self):
|
||||
try:
|
||||
self.register_service(port=self.port)
|
||||
except Exception as e:
|
||||
self.logger.warning('Could not register the Zeroconf service')
|
||||
self.logger.exception(e)
|
||||
|
||||
def run(self):
|
||||
super().run()
|
||||
|
||||
if not self.disable_websocket:
|
||||
self.logger.info('Initializing websocket interface')
|
||||
self.websocket_thread = threading.Thread(target=self.websocket)
|
||||
|
@ -483,5 +490,8 @@ class HttpBackend(Backend):
|
|||
+ 'for the webserver (e.g. nginx)'
|
||||
)
|
||||
|
||||
self._service_registry_thread = threading.Thread(target=self._register_service)
|
||||
self._service_registry_thread.start()
|
||||
|
||||
|
||||
# vim:sw=4:ts=4:et:
|
||||
|
|
Loading…
Reference in a new issue