python - python Tronado不支持流式传输大量数据
问题描述
我需要在 Python REST API 中流式传输巨大的 Oracle 记录集。我在龙卷风服务器上运行烧瓶。当我使用龙卷风流式剂量工作时,而在烧瓶本机服务器(werkzeung)上它工作得很好。谁能帮我龙卷风是否支持流媒体?这是一小部分代码示例,只是尝试使用 yield 进行流式传输。
import tornado.web
from tornado import gen, httpclient
import asyncio, json, time
class basicReuqestHandler(tornado.web.RequestHandler):
def get(self):
self.write("Helow World!")
class staticReuqestHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
class StreamingHandler(tornado.web.RequestHandler):
@gen.coroutine
def get(self):
self.write("starting ....")
def stream():
a = 1
for i in range(100):
a = a+i
print(i)
print(json.dumps(i))
yield json.dumps(i)
self.write(stream())
self.write("closing...")
self.finish()
if __name__=='__main__':
app = tornado.web.Application([
(r"/", basicReuqestHandler),
(r"/myPage",staticReuqestHandler ),
(r"/StreamTest", StreamingHandler),
])
app.listen(7000)
tornado.ioloop.IOLoop.current().start()
解决方案
我弄错了,所以在这里回答我的问题以帮助任何有类似问题的人。这是代码:
import tornado.web
from tornado import gen, httpclient
import asyncio, json, time
class basicReuqestHandler(tornado.web.RequestHandler):
def get(self):
self.write("Helow World!")
class staticReuqestHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
class StreamingHandler(tornado.web.RequestHandler):
@gen.coroutine
def get(self):
self.write("starting ....")
def stream():
for i in range(100):
print(i)
print(json.dumps(i))
self.write(json.dumps(i))
yield self.flush()
self.write("closing...")
self.finish()
if __name__=='__main__':
app = tornado.web.Application([
(r"/", basicReuqestHandler),
(r"/myPage",staticReuqestHandler ),
(r"/StreamTest", StreamingHandler),
])
app.listen(7000)
tornado.ioloop.IOLoop.current().start()
推荐阅读
- javascript - 将元素添加到您的预期值
- flutter - 展开时如何更改 ExpansionTile 标题?
- javascript - 如何将背景 url 传递给:在 React 中的 OnVisible 之后
- python - OSERROR WINERROR [10049] 它适用于我的 ipv4,但是当我尝试使用公共时会发生这种情况
- html - Django模板中的for循环
- python - 更好地理解 mainloop()
- arrays - 是否可以从另一个对象数组的 ID 中找到对象数组中的值?
- java - 运行时错误:找不到启动意图的活动。我正在尝试查看和检索存储在 FirebaseStorage 上的 pdf 文档
- latex - 在我的投影仪演示文稿上打印参考书目的问题
- javascript - 想要在 3 个标签之后隐藏所有标签并与所有其他标签一起使用,就像我再使用一次 HTML 代码一样,它适用于第一个标签,也适用于第二个标签