From 45f11e513c6f6faedc333a8bb55c0d5f8c213ddb Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 27 Nov 2024 11:20:05 +0000 Subject: [PATCH] asterisk: Don't keep a permanent connection This was not very stable and caused that we sometimes could not render the user pages. Now, we establish a new connection with every request which is still fast enough. Signed-off-by: Michael Tremer --- src/backend/asterisk.py | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/src/backend/asterisk.py b/src/backend/asterisk.py index f182776c..10653dc5 100644 --- a/src/backend/asterisk.py +++ b/src/backend/asterisk.py @@ -14,21 +14,6 @@ from .decorators import * logging.getLogger("panoramisk").setLevel(logging.INFO) class Asterisk(misc.Object): - def init(self): - self.__manager = None - - loop = asyncio.get_event_loop() - - # Connect as soon as the event loop starts - loop.create_task(self.connect()) - - @property - def manager(self): - if not self.__manager: - raise RuntimeError("Asterisk is not connected") - - return self.__manager - async def connect(self): """ Connects to Asterisk @@ -49,20 +34,17 @@ class Asterisk(misc.Object): def _on_connect(self, manager): logging.debug("Connection to Asterisk established") - # Close any existing connections - if self.__manager: - self.__manager.close() - - self.__manager = manager - async def _fetch(self, cls, action, filter=None, data={}): objects = [] # Collect arguments args = { "Action" : action } | data + # Connect to Asterisk + manager = await self.connect() + # Run the action and parse all messages - for data in await self.manager.send_action(args): + for data in await manager.send_action(args): if not "Event" in data or not data.Event == cls.event: continue -- 2.47.2