2016-12-01 15 views
0

私のPythonのバージョンは私の竜巻のバージョンが4.3.Myコードで、3.4で発生し、このようなものです:これは単純に、チャンクが終了するため、クライアントは待つだけ、動作することはできませんは、チャンク応答

import tornado.ioloop 
import tornado.web 
import tornado.httputil 
import tornado.httpserver 


class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
     body = 'foobar'*10 
     self.set_header('Transfer-Encoding', 'chunked') 
     self.write(body) 
     self.flush() 
     self.finish() 


app = tornado.web.Application([ 
     (r'/chunked', MainHandler), 
]) 

if __name__ == "__main__": 
    app.listen(8080) 
    tornado.ioloop.IOLoop.current().start() 

。竜巻サーバーを使用しているときにチャンクされた応答を正しく生成する方法は?

答えて

4

writeを1回呼び出すと、応答に1つのチャンクが作成されます。複数のチャンクを取得するには、writeを何回か呼び出して、毎回フラッシュし、yieldを呼び出す必要があります(何も降伏していなければ、応答にチャンクを使用する価値はありません)。

@tornado.gen.coroutine 
def get(self): 
    for i in range(10): 
     self.write('foobar') 
     yield self.flush() 
+1

また、Transfer-Encodingヘッダーを手動で設定しないでください(すべてのチャンクエンコーディングフレームも生成しない限り)。これは、サーバーフレームワークが制御するためのものです。 –

関連する問題