0

I have written a Kafka consumer, in which I am capturing some metrics inside a class variable, below is the code of consumer.

class Consumer(Thread):

    def __init__(self, kafka_topic, kafka_brokers, group_id):
        Thread.__init__(self)
        self.consumer = KafkaConsumer(kafka_topic, bootstrap_servers=kafka_brokers, group_id=group_id)
        self.metrics = Metrics()

    def process_message(self, message):
        msg_data = json.loads(message.value)
        meeting_id = str(uuid.uuid1())
        metric_response = MetricResponse(meeting_id)

        #perform some task and update metric response object

        self.metrics.add_metric_response(metric_response)
        print('\nFinished......')

    def get_metrics(self):
        return self.metrics

    def run(self):
        print('Consumer started...')
        with ThreadPoolExecutor(max_workers=10) as executor:
            for message in self.consumer:
                executor.map(self.process_message, (message,))

Now i have written a flask api to retrieve this metrics variable where I am starting consumer also but I am getting empty metrics object. Below is api code

app = Flask(__name__)
consumer = Consumer('my-topic', ['localhost:9092'], 'my-group')
consumer.start()

@app.route('/metrics')
def get_metrics():
    metrics = consumer.get_metrics()
    metrics_response = metrics.toJSON()
    return Response(metrics_response, 200, mimetype='application/json')

if __name__ == '__main__':
    app.run(debug=True)

I need help to access metrics object from consumer class. I am new to Python

OneCricketeer
  • 179,855
  • 19
  • 132
  • 245
Sumit Kumar
  • 402
  • 1
  • 6
  • 26

0 Answers0