diff --git a/src/murfey/client/multigrid_control.py b/src/murfey/client/multigrid_control.py index c3b24a050..df4531877 100644 --- a/src/murfey/client/multigrid_control.py +++ b/src/murfey/client/multigrid_control.py @@ -9,7 +9,6 @@ from typing import Dict, List, Optional from urllib.parse import quote, urlparse -import aiohttp import requests import murfey.client.websocket @@ -22,7 +21,7 @@ from murfey.client.watchdir import DirWatcher from murfey.util import posix_path from murfey.util.api import url_path_for -from murfey.util.client import capture_post, get_machine_config_client +from murfey.util.client import capture_delete, capture_post, get_machine_config_client log = logging.getLogger("murfey.client.mutligrid_control") @@ -117,7 +116,7 @@ def _multigrid_watcher_finalised(self): self.multigrid_watcher_active = False self.dormancy_check() - async def dormancy_check(self): + def dormancy_check(self): if not self.multigrid_watcher_active: if ( all(r._finalised for r in self.rsync_processes.values()) @@ -126,14 +125,22 @@ async def dormancy_check(self): w.thread.is_alive() for w in self._environment.watchers.values() ) ): - async with aiohttp.ClientSession() as clientsession: - async with clientsession.delete( + + def call_remove_session(): + response = capture_delete( f"{self._environment.url.geturl()}{url_path_for('session_control.router', 'remove_session', session_id=self.session_id)}", - json={"access_token": self.token, "token_type": "bearer"}, - ) as response: - success = response.status == 200 - if not success: - log.warning(f"Could not delete database data for {self.session_id}") + ) + success = response.status_code == 200 if response else False + if not success: + log.warning( + f"Could not delete database data for {self.session_id}" + ) + + dormancy_thread = threading.Thread( + name=f"Session deletion thread {self.session_id}", + target=call_remove_session, + ) + dormancy_thread.start() self.dormant = True def abandon(self): diff --git a/src/murfey/util/client.py b/src/murfey/util/client.py index 2721baa0f..b564a3cbc 100644 --- a/src/murfey/util/client.py +++ b/src/murfey/util/client.py @@ -123,6 +123,20 @@ def capture_get(url: str) -> Optional[requests.Response]: return response +def capture_delete(url: str) -> Optional[requests.Response]: + try: + response = requests.delete(url) + except Exception as e: + logger.error(f"Exception encountered in delete of {url}: {e}") + response = None + if response and response.status_code != 200: + logger.warning( + f"Response to delete of {url} had status code {response.status_code}. " + f"The reason given was {response.reason}" + ) + return response + + def set_default_acquisition_output( new_output_dir: Path, software_settings_output_directories: dict[str, list[str]],