Fix asyncio event loop init in qml_bridge.py

Depending on Python version the file may be imported in a thread and
asyncio only implicitly creates an event loop in the main thread of the
process.  Backend does things which need asyncio so we must ensure an
event loop exists before it is imported.

Fixes #15
This commit is contained in:
Mikko Rasa 2020-05-15 15:07:41 +03:00
parent 4bae3cf90e
commit 9a6c4b5b30

View File

@ -40,12 +40,16 @@ class QMLBridge:
""" """
def __init__(self) -> None: def __init__(self) -> None:
try:
self._loop = asyncio.get_event_loop()
except RuntimeError:
self._loop = asyncio.new_event_loop()
asyncio.set_event_loop(self._loop)
self._loop.set_exception_handler(self._loop_exception_handler)
from .backend import Backend from .backend import Backend
self.backend: Backend = Backend() self.backend: Backend = Backend()
self._loop = asyncio.get_event_loop()
self._loop.set_exception_handler(self._loop_exception_handler)
Thread(target=self._start_asyncio_loop).start() Thread(target=self._start_asyncio_loop).start()