from queue import Queue from threading import Thread class MetricsSender(Thread): queue: Queue = Queue() def put(self, metric): self.queue.put(metric) def run(self): while True: metric = self.queue.get() if not metric: continue try: metric = metric() if metric.status_code == 202: print('metric ok') else: print(f'metric failed: {metric.status_code}') except Exception as e: print(f'metric failed: {e}') metrics_sender = MetricsSender() metrics_sender.start()