Flask-Kafka:发布到生产者并在一个http请求中来自消费者的请求

时间:2019-01-30 01:00:50

标签: flask apache-kafka

我有一些需要由外部库处理的数据,我通过Flask中的POST请求将数据发送给Kafka生产者,在处理了外部库之后将数据发送给使用者。

在app.py文件中,我有类似以下内容:

from flask import request, jsonify
from app.common import kafka_buffer


@app.route('/process', methods=['POST'])
def process_data():
    data = request.get_json()
    response = kafka_buffer(data)
    return jsonify([r for r in response])

在common.py文件中,我有类似以下内容:

from kafka import KafkaProducer, KafkaConsumer


producer = KafkaProducer(bootstrap_servers='localhost:9092')
consumer = KafkaConsumer('some_consumer', bootstrap_servers='localhost:9092')


kafka_buffer(text):
    producer.send('some_producer', bytes(text, 'utf-8'))
    for message in consumer:
        yield message.value

当我尝试从使用者那里获取数据作为响应时,我收到了超时错误,并且从未获得处理过的数据,它只是挂在那里。

我想要的是一口气将处理后的数据作为HTTP响应发送回去,我的意思是在同一请求中。

有什么想法吗?

0 个答案:

没有答案