python Tronado不支持流式传输大数据

python Tronado不支持流式传输大数据,python,flask,tornado,Python,Flask,Tornado,我需要在PythonRESTAPI中传输巨大的oracle记录集。我正在tornado服务器上运行flask。当我使用tornado流媒体时,dosent工作正常,而在flask原生服务器(werkzeung)上,它工作正常。有人能帮我看一下tornado是否支持流媒体吗? 下面是一个小的代码示例,它只是尝试使用yield进行流式处理 import tornado.web from tornado import gen, httpclient import asyncio, json, time

我需要在PythonRESTAPI中传输巨大的oracle记录集。我正在tornado服务器上运行flask。当我使用tornado流媒体时,dosent工作正常,而在flask原生服务器(werkzeung)上,它工作正常。有人能帮我看一下tornado是否支持流媒体吗? 下面是一个小的代码示例,它只是尝试使用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()

请向我们展示一些代码…根据您读取/处理源数据的方式,您可能正在阻止Tornado的iLoop。请查找示例代码。我不能流的响应,我给出的范围只是一个例子,只是认为这是生成器,如DB光标。