diff --git a/freedata_server/audio.py b/freedata_server/audio.py index fca80cb5..fa0c035f 100644 --- a/freedata_server/audio.py +++ b/freedata_server/audio.py @@ -38,7 +38,7 @@ def get_audio_devices(): target=fetch_audio_devices, args=(proxy_input_devices, proxy_output_devices) ) proc.start() - proc.join() + proc.join(3) # additional logging for audio devices # log.debug("[AUD] get_audio_devices: input_devices:", list=f"{proxy_input_devices}") diff --git a/freedata_server/demodulator.py b/freedata_server/demodulator.py index 776dbf95..5d7b2f53 100644 --- a/freedata_server/demodulator.py +++ b/freedata_server/demodulator.py @@ -365,4 +365,4 @@ class Demodulator(): print("shutting down demodulators...") self.shutdown_flag.set() for mode in self.MODE_DICT: - self.MODE_DICT[mode]['decoding_thread'].join() \ No newline at end of file + self.MODE_DICT[mode]['decoding_thread'].join(3) \ No newline at end of file diff --git a/freedata_server/rigctld.py b/freedata_server/rigctld.py index 4a445c7f..b9170497 100644 --- a/freedata_server/rigctld.py +++ b/freedata_server/rigctld.py @@ -43,6 +43,8 @@ class radio: self.connect() def connect(self): + print(self.hostname) + print(self.port) if self.shutdown: return try: @@ -350,6 +352,9 @@ class radio: self.log.info(f"Attempting to start rigctld using binary found at: {binary_path}") self.rigctld_process = helpers.kill_and_execute(binary_path, additional_args) self.log.info("Successfully executed rigctld.") + print(self.rigctld_process) + print(additional_args) + print(binary_paths) break # Exit the loop after successful execution except Exception as e: pass diff --git a/freedata_server/schedule_manager.py b/freedata_server/schedule_manager.py index c80bfbd4..7f1a638b 100644 --- a/freedata_server/schedule_manager.py +++ b/freedata_server/schedule_manager.py @@ -19,7 +19,7 @@ class ScheduleManager: self.event_manager = event_manager self.config = self.config_manager.read() - self.scheduler = sched.scheduler(time.time, time.sleep) + self.scheduler = sched.scheduler(time.time, threading.Event().wait) self.events = { 'check_for_queued_messages': {'function': self.check_for_queued_messages, 'interval': 5}, 'explorer_publishing': {'function': self.push_to_explorer, 'interval': 60}, @@ -65,7 +65,7 @@ class ScheduleManager: # Wait for the scheduler thread to finish if self.scheduler_thread: - self.scheduler_thread.join() + self.scheduler_thread.join(3) print("done") def transmit_beacon(self): try: @@ -100,8 +100,5 @@ class ScheduleManager: except Exception as e: print(e) - # let's wait some random time for decreasing chance of packet colission. - threading.Event().wait(np.random.randint(3,10)) - return diff --git a/freedata_server/server.py b/freedata_server/server.py index 4c41277c..6a940d96 100644 --- a/freedata_server/server.py +++ b/freedata_server/server.py @@ -355,10 +355,11 @@ def stop_server(): if hasattr(app, 'radio_manager'): app.radio_manager.stop() - + import time + start_time = time.time() if hasattr(app, 'schedule_manager'): app.schedule_manager.stop() - + print(time.time()-start_time) if hasattr(app, 'service_manager'): if hasattr(app.service_manager, 'modem_service') and app.service_manager.modem_service: diff --git a/freedata_server/service_manager.py b/freedata_server/service_manager.py index e27b51eb..1637d4d6 100644 --- a/freedata_server/service_manager.py +++ b/freedata_server/service_manager.py @@ -148,4 +148,4 @@ class SM: print("shutting down service manager...") self.modem_service.put("stop") self.shutdown_flag.set() - self.runner_thread.join() + self.runner_thread.join(3) diff --git a/freedata_server/socket_interface.py b/freedata_server/socket_interface.py index ca509081..d203487b 100644 --- a/freedata_server/socket_interface.py +++ b/freedata_server/socket_interface.py @@ -185,12 +185,12 @@ class SocketInterfaceHandler: # Gracefully shutdown the server if self.command_server: self.command_server.shutdown() - self.command_server_thread.join() + self.command_server_thread.join(3) del self.command_server if self.data_server: self.data_server.shutdown() - self.data_server_thread.join() + self.data_server_thread.join(3) del self.data_server self.log(f"socket interfaces stopped")