From 568b6b2936550b8e11f825e9006dc0a50222242a Mon Sep 17 00:00:00 2001 From: Lars Holmberg Date: Tue, 11 Jun 2019 13:09:08 +0200 Subject: [PATCH] Ensure that the last samples get sent by slave and received by master. --- locust/runners.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/locust/runners.py b/locust/runners.py index a6e9542e13..268f70330b 100644 --- a/locust/runners.py +++ b/locust/runners.py @@ -321,6 +321,7 @@ def stop(self): def quit(self): for client in self.clients.all: self.server.send_to_client(Message("quit", None, client.id)) + gevent.sleep(0.5) # wait for final stats report from all slaves self.greenlet.kill(block=True) def heartbeat_worker(self): @@ -439,16 +440,20 @@ def worker(self): elif msg.type == "quit": logger.info("Got quit message from master, shutting down...") self.stop() + self._send_stats() # send a final report, in case there were any samples not yet reported self.greenlet.kill(block=True) def stats_reporter(self): while True: - data = {} - events.report_to_master.fire(client_id=self.client_id, data=data) try: - self.client.send(Message("stats", data, self.client_id)) + self._send_stats() except: logger.error("Connection lost to master server. Aborting...") break gevent.sleep(SLAVE_REPORT_INTERVAL) + + def _send_stats(self): + data = {} + events.report_to_master.fire(client_id=self.client_id, data=data) + self.client.send(Message("stats", data, self.client_id))