|
3 | 3 | import logging |
4 | 4 | import multiprocessing.synchronize as ms |
5 | 5 | import os |
6 | | -import pickle |
7 | 6 | import queue |
8 | | -import time |
9 | 7 | from multiprocessing import Event |
10 | 8 | from multiprocessing.queues import Queue |
11 | | -from typing import TYPE_CHECKING, Literal, Optional, Tuple, Union, cast |
| 9 | +from typing import TYPE_CHECKING, Literal, Optional, Tuple, Union |
12 | 10 |
|
13 | 11 | import typeguard |
14 | 12 |
|
15 | | -from parsl.log_utils import set_file_logger |
16 | 13 | from parsl.monitoring.errors import MonitoringHubStartError |
| 14 | +from parsl.monitoring.radios.filesystem_router import filesystem_router_starter |
17 | 15 | from parsl.monitoring.radios.multiprocessing import MultiprocessingQueueRadioSender |
18 | 16 | from parsl.monitoring.radios.udp_router import udp_router_starter |
19 | 17 | from parsl.monitoring.radios.zmq_router import zmq_router_starter |
20 | 18 | from parsl.monitoring.types import TaggedMonitoringMessage |
21 | 19 | from parsl.multiprocessing import ForkProcess, SizedQueue |
22 | | -from parsl.process_loggers import wrap_with_logs |
23 | | -from parsl.utils import RepresentationMixin, setproctitle |
| 20 | +from parsl.utils import RepresentationMixin |
24 | 21 |
|
25 | 22 | _db_manager_excepts: Optional[Exception] |
26 | 23 |
|
@@ -183,7 +180,7 @@ def start(self, dfk_run_dir: str, config_run_dir: Union[str, os.PathLike]) -> No |
183 | 180 | logger.info("Started ZMQ router process %s, UDP router process %s and DBM process %s", |
184 | 181 | self.zmq_router_proc.pid, self.udp_router_proc.pid, self.dbm_proc.pid) |
185 | 182 |
|
186 | | - self.filesystem_proc = ForkProcess(target=filesystem_receiver, |
| 183 | + self.filesystem_proc = ForkProcess(target=filesystem_router_starter, |
187 | 184 | args=(self.resource_msgs, dfk_run_dir), |
188 | 185 | name="Monitoring-Filesystem-Process", |
189 | 186 | daemon=True |
@@ -285,41 +282,3 @@ def close(self) -> None: |
285 | 282 | self.resource_msgs.close() |
286 | 283 | self.resource_msgs.join_thread() |
287 | 284 | logger.info("Closed monitoring multiprocessing queues") |
288 | | - |
289 | | - |
290 | | -@wrap_with_logs |
291 | | -def filesystem_receiver(q: Queue[TaggedMonitoringMessage], run_dir: str) -> None: |
292 | | - logger = set_file_logger(f"{run_dir}/monitoring_filesystem_radio.log", |
293 | | - name="monitoring_filesystem_radio", |
294 | | - level=logging.INFO) |
295 | | - |
296 | | - logger.info("Starting filesystem radio receiver") |
297 | | - setproctitle("parsl: monitoring filesystem receiver") |
298 | | - base_path = f"{run_dir}/monitor-fs-radio/" |
299 | | - tmp_dir = f"{base_path}/tmp/" |
300 | | - new_dir = f"{base_path}/new/" |
301 | | - logger.debug("Creating new and tmp paths under %s", base_path) |
302 | | - |
303 | | - target_radio = MultiprocessingQueueRadioSender(q) |
304 | | - |
305 | | - os.makedirs(tmp_dir, exist_ok=True) |
306 | | - os.makedirs(new_dir, exist_ok=True) |
307 | | - |
308 | | - while True: # this loop will end on process termination |
309 | | - logger.debug("Start filesystem radio receiver loop") |
310 | | - |
311 | | - # iterate over files in new_dir |
312 | | - for filename in os.listdir(new_dir): |
313 | | - try: |
314 | | - logger.info("Processing filesystem radio file %s", filename) |
315 | | - full_path_filename = f"{new_dir}/{filename}" |
316 | | - with open(full_path_filename, "rb") as f: |
317 | | - message = pickle.load(f) |
318 | | - logger.debug("Message received is: %s", message) |
319 | | - assert isinstance(message, tuple) |
320 | | - target_radio.send(cast(TaggedMonitoringMessage, message)) |
321 | | - os.remove(full_path_filename) |
322 | | - except Exception: |
323 | | - logger.exception("Exception processing %s - probably will be retried next iteration", filename) |
324 | | - |
325 | | - time.sleep(1) # whats a good time for this poll? |
0 commit comments