From 12fc479da12af2181e751fce1e6e75dbe75b9162 Mon Sep 17 00:00:00 2001 From: David Hammer <dhammer@mailbox.org> Date: Fri, 1 Apr 2022 18:22:52 +0200 Subject: [PATCH] For Karabo 2.14.x: increase instantiation timeout, gather for speed --- src/calng/CalibrationManager.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/calng/CalibrationManager.py b/src/calng/CalibrationManager.py index 9fdeb9e8..83ee3070 100644 --- a/src/calng/CalibrationManager.py +++ b/src/calng/CalibrationManager.py @@ -1151,7 +1151,7 @@ class CalibrationManager(DeviceClientBase, Device): try: msg = await wait_for(instantiate( - server, class_id, device_id, config), 5.0) + server, class_id, device_id, config), 20.0) except AsyncTimeoutError: self._set_error(f'Instantiation timeout on {device_id}') return False @@ -1210,6 +1210,7 @@ class CalibrationManager(DeviceClientBase, Device): correct_device_id_by_module = {} input_source_by_module = {} + awaitables = [] for index, row in enumerate(self.modules.value): vname, group, aggregator, input_channel, input_source = row @@ -1245,11 +1246,13 @@ class CalibrationManager(DeviceClientBase, Device): if not ismethod(value): config[key] = value - if not await self._instantiate_device( - server_by_group[group], class_ids['correction'], device_id, - config - ): - return + awaitables.append(self._instantiate_device( + server_by_group[group], + class_ids['correction'], + device_id, + config)) + await gather(*awaitables) + awaitables.clear() # Instantiate group matchers which can also be bridges. for row in self.moduleGroups.value: @@ -1307,10 +1310,11 @@ class CalibrationManager(DeviceClientBase, Device): config['geometryDevice'] = self.geometryDevice.value config['maxIdle'] = self.maxIdle.value - if not await self._instantiate_device( - server, class_ids['assembler'], assembler_device_id, config - ): - return + awaitables.append(self._instantiate_device( + server, class_ids['assembler'], assembler_device_id, config)) + + await gather(*awaitables) + awaitables.clear() self._set_status('All devices instantiated') self.state = State.ACTIVE -- GitLab