Skip to content

Commit 5c59916

Browse files
Stop the dormancy check being async, and instead run as thread (#622)
1 parent 2602b0a commit 5c59916

File tree

2 files changed

+31
-10
lines changed

2 files changed

+31
-10
lines changed

src/murfey/client/multigrid_control.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from typing import Dict, List, Optional
1010
from urllib.parse import quote, urlparse
1111

12-
import aiohttp
1312
import requests
1413

1514
import murfey.client.websocket
@@ -22,7 +21,7 @@
2221
from murfey.client.watchdir import DirWatcher
2322
from murfey.util import posix_path
2423
from murfey.util.api import url_path_for
25-
from murfey.util.client import capture_post, get_machine_config_client
24+
from murfey.util.client import capture_delete, capture_post, get_machine_config_client
2625

2726
log = logging.getLogger("murfey.client.mutligrid_control")
2827

@@ -121,7 +120,7 @@ def _multigrid_watcher_finalised(self):
121120
self.multigrid_watcher_active = False
122121
self.dormancy_check()
123122

124-
async def dormancy_check(self):
123+
def dormancy_check(self):
125124
if not self.multigrid_watcher_active:
126125
if (
127126
all(r._finalised for r in self.rsync_processes.values())
@@ -130,14 +129,22 @@ async def dormancy_check(self):
130129
w.thread.is_alive() for w in self._environment.watchers.values()
131130
)
132131
):
133-
async with aiohttp.ClientSession() as clientsession:
134-
async with clientsession.delete(
132+
133+
def call_remove_session():
134+
response = capture_delete(
135135
f"{self._environment.url.geturl()}{url_path_for('session_control.router', 'remove_session', session_id=self.session_id)}",
136-
json={"access_token": self.token, "token_type": "bearer"},
137-
) as response:
138-
success = response.status == 200
139-
if not success:
140-
log.warning(f"Could not delete database data for {self.session_id}")
136+
)
137+
success = response.status_code == 200 if response else False
138+
if not success:
139+
log.warning(
140+
f"Could not delete database data for {self.session_id}"
141+
)
142+
143+
dormancy_thread = threading.Thread(
144+
name=f"Session deletion thread {self.session_id}",
145+
target=call_remove_session,
146+
)
147+
dormancy_thread.start()
141148
self.dormant = True
142149

143150
def abandon(self):

src/murfey/util/client.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,20 @@ def capture_get(url: str) -> Optional[requests.Response]:
123123
return response
124124

125125

126+
def capture_delete(url: str) -> Optional[requests.Response]:
127+
try:
128+
response = requests.delete(url)
129+
except Exception as e:
130+
logger.error(f"Exception encountered in delete of {url}: {e}")
131+
response = None
132+
if response and response.status_code != 200:
133+
logger.warning(
134+
f"Response to delete of {url} had status code {response.status_code}. "
135+
f"The reason given was {response.reason}"
136+
)
137+
return response
138+
139+
126140
def set_default_acquisition_output(
127141
new_output_dir: Path,
128142
software_settings_output_directories: dict[str, list[str]],

0 commit comments

Comments
 (0)