From 24ba039dbaa6e314aed0f7bc89907f6588ac13df Mon Sep 17 00:00:00 2001 From: Dmitri Gavrilov Date: Thu, 14 Mar 2024 12:34:37 -0400 Subject: [PATCH 1/2] ENH: removed fixed delay in the polling loop --- bluesky_queueserver/manager/worker.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/bluesky_queueserver/manager/worker.py b/bluesky_queueserver/manager/worker.py index c77f844d..14d912f2 100644 --- a/bluesky_queueserver/manager/worker.py +++ b/bluesky_queueserver/manager/worker.py @@ -1301,11 +1301,8 @@ def _execute_in_main_thread(self): self._exit_main_loop_event.clear() while True: - # Polling 10 times per second. This is fast enough for slowly executed plans. - ttime.sleep(0.1) - try: - parameters, plan_exec_option = self._execution_queue.get(False) + parameters, plan_exec_option = self._execution_queue.get(block=True, timeout=0.1) self._execute_plan_or_task(parameters, plan_exec_option) except queue.Empty: pass From 4116a8fae377e8466698b0e8d13362c9b335b471 Mon Sep 17 00:00:00 2001 From: Dmitri Gavrilov Date: Thu, 14 Mar 2024 12:57:10 -0400 Subject: [PATCH 2/2] ENH: reserve kernel only if IPython kernel is used --- bluesky_queueserver/manager/manager.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/bluesky_queueserver/manager/manager.py b/bluesky_queueserver/manager/manager.py index e4fdccfe..d7e00278 100644 --- a/bluesky_queueserver/manager/manager.py +++ b/bluesky_queueserver/manager/manager.py @@ -1471,13 +1471,18 @@ async def _worker_command_confirm_exit(self): async def _worker_command_reserve_kernel(self): """ - Initiate stopping the execution loop. Call fails if the worker is running on Python - (not IPython kernel). + Reserve the kernel (start execution loop in the kernel) if the worker is + running IPython kernel. Return ``True`` if the worker is not using IPython + kernel (execution loop is continuously running in this case, so the 'kernel' + can always be considered reserved). """ try: - response = await self._comm_to_worker.send_msg("command_reserve_kernel") - success = response["status"] == "accepted" - err_msg = response["err_msg"] + if self._use_ipython_kernel: + response = await self._comm_to_worker.send_msg("command_reserve_kernel") + success = response["status"] == "accepted" + err_msg = response["err_msg"] + else: + success, err_msg = True, "" except CommTimeoutError: success, err_msg = None, "Timeout occurred while processing the request" return success, err_msg