python – 作为实时kafka消费者的Flask API
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 作为实时kafka消费者的Flask API,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1801字,纯文字阅读大概需要3分钟。
内容图文
![python – 作为实时kafka消费者的Flask API](/upload/InfoBanner/zyjiaocheng/767/530454b924f04fce93d0e79d57ff4614.jpg)
我想构建一个使用Flask框架开发的python API,它使用Kafka主题并将流推送到客户端(html页面或其他应用程序).
我尝试使用虚拟数据生成实时流程(请参阅下面的实时路线).发生的问题是结果变量仅在循环结束后被推送,而结果变量应该在每次迭代时被推送.
我还尝试使用Kafka连接生成实时流(请参阅下面的kafka路线).问题是没有返回数据,而是请求没有完成.
from flask import Response, Flask
import time
from kafka import KafkaConsumer
application = Flask(__name__)
@application.route('/')
def index():
return "Hello, World!"
@application.route('/realtime/')
def realtime():
def createGenerator():
for i in range(1,10):
yield str(i) + '\n'
time.sleep(0.2)
return Response(createGenerator())
@application.route('/kafka/')
def kafkaStream():
consumer = KafkaConsumer(bootstrap_servers = 'serverlocation',
client_id = 'name of client',
auto_offset_reset = 'earliest',
value_deserializer = lambda m: json.loads(m.decode('ascii')))
consumer.subscribe(topics=['my-topic'])
def events():
result = []
for message in consumer:
if message is not None:
result.append(message.value)
yield result
return Response(events())
if __name__ == '__main__':
application.run(debug = True)
到目前为止,我有效地从Kafka接收数据的唯一方法是在控制台中打印结果.
from kafka import KafkaConsumer
consumer = KafkaConsumer(bootstrap_servers = 'serverlocation',
client_id = 'name of client',
auto_offset_reset = 'earliest',
value_deserializer = lambda m: json.loads(m.decode('ascii')))
consumer.subscribe(topics=['my-topic'])
for message in consumer:
print message
我认为问题是API在进程完成之前无法推送数据,并且因为KafkaConsumer连接是无限的,所以没有任何东西被推送到客户端.
我怎样才能克服这个问题?
解决方法:
既然我想了解更多相关信息,请花一些时间.经过4个小时的尝试,注意到:
def events():
result = []
for message in consumer:
if message is not None:
result.append(str(message.value)) # <--- here (str)
yield result
内容总结
以上是互联网集市为您收集整理的python – 作为实时kafka消费者的Flask API全部内容,希望文章能够帮你解决python – 作为实时kafka消费者的Flask API所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。