Skip to content

Commit 896a9a7

Browse files
committed
Use multiprocessing.Event to tell worker when to exit
1 parent 53e1e2f commit 896a9a7

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

simvue/run.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ def __enter__(self):
162162

163163
def __exit__(self, type, value, traceback):
164164
if self._name and self._status == 'running':
165+
self._shutdown_event.set()
165166
if not type:
166167
self.set_status('completed')
167168
else:
@@ -203,8 +204,10 @@ def _start(self, reconnect=False):
203204

204205
self._metrics_queue = multiprocessing.Manager().Queue(maxsize=self._queue_size)
205206
self._events_queue = multiprocessing.Manager().Queue(maxsize=self._queue_size)
207+
self._shutdown_event = multiprocessing.Manager().Event()
206208
self._worker = Worker(self._metrics_queue,
207209
self._events_queue,
210+
self._shutdown_event,
208211
self._uuid,
209212
self._name,
210213
self._url,
@@ -659,8 +662,9 @@ def close(self):
659662
if not self._active:
660663
self._error('Run is not active')
661664
return False
662-
665+
663666
self.set_status('completed')
667+
self._shutdown_event.set()
664668

665669
def set_folder_details(self, path, metadata={}, tags=[], description=None):
666670
"""

simvue/worker.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ def update_processes(parent, processes):
2929

3030

3131
class Worker(threading.Thread):
32-
def __init__(self, metrics_queue, events_queue, uuid, run_name, url, headers, mode, pid, resources_metrics_interval):
32+
def __init__(self, metrics_queue, events_queue, shutdown_event, uuid, run_name, url, headers, mode, pid, resources_metrics_interval):
3333
threading.Thread.__init__(self)
3434
self._parent_thread = threading.currentThread()
3535
self._metrics_queue = metrics_queue
3636
self._events_queue = events_queue
37+
self._shutdown_event = shutdown_event
3738
self._run_name = run_name
3839
self._uuid = uuid
3940
self._url = url
@@ -144,11 +145,12 @@ def run(self):
144145
pass
145146
buffer = []
146147

147-
if not self._parent_thread.is_alive():
148+
if self._shutdown_event.is_set():
148149
if self._metrics_queue.empty() and self._events_queue.empty():
150+
print('eixitig')
149151
sys.exit(0)
150152
else:
151153
counter = 0
152-
while counter < POLLING_INTERVAL and self._parent_thread.is_alive():
154+
while counter < POLLING_INTERVAL and not self._shutdown_event.is_set():
153155
time.sleep(1)
154156
counter += 1

0 commit comments

Comments
 (0)