我有一些需要由外部库处理的数据,我通过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响应发送回去,我的意思是在同一请求中。
有什么想法吗?