2009-04-08 5 views

답변

5

꼬인 지지대 chunked transfer encoding (API link) (HTTPChannel의 API 문서 참조). Twisted를 사용하는 수많은 프로덕션 등급 프로젝트가 있습니다 (예 : Apple이 Mac OS X Server의 iCalendar 서버용으로 사용함). 따라서 지원이 뛰어나고 강력합니다.

+0

감사합니다, 나는 트위스트 들었어요,하지만 내 첫 인상은 내 작업에 대한 비트 헤비급이었다이었다 : – slacy

+0

나는 비틀어서 큰 API를 가지고 있고 약간 교묘하게 보이고 약간 배우는듯한 느낌이 들었다. 처음에는 저를 해 쳤지 만 때로는 작업에 적합한 도구라고 생각합니다. :-) –

0

저는 WSGI 준수 서버가이를 지원해야한다고 확신합니다. 기본적으로 WSGI 응용 프로그램은 웹 서버가 반환하는 반복 가능한 청크를 반환합니다. 나는 이것에 대한 직접 경험이 없지만 여기에 list of compliant servers입니다.

WSGI 서버가 파이썬의 기본 제공 CGIHTTPServer을 사용하여 찾고있는 것을 충족시키지 못한다면 스스로 롤업하는 것이 상당히 쉽다고 생각해야합니다. 그것은 이미 다중 스레드되어 있으므로 응답을 청크하는 것은 당신에게 달려 있습니다.

2

트위스트는 청크 분할 전송을 지원하며 투명하게 처리합니다. 즉, 요청 처리기가 응답 길이를 지정하지 않으면 트위스트가 자동으로 청크 분할 전송으로 전환되고 Request.write에 대한 호출 당 하나의 청크가 생성됩니다.

#!/usr/bin/env python 

import logging 

import tornado.httpserver 
import tornado.ioloop 
import tornado.options 
import tornado.web 

from tornado.options import define, options 

define("port", default=8080, help="run on the given port", type=int) 

@tornado.web.stream_request_body 
class MainHandler(tornado.web.RequestHandler): 
    def post(self): 
     print() 
    def data_received(self, chunk): 
     self.write(chunk) 

     logging.info(chunk) 

def main(): 
    tornado.options.parse_command_line() 

    application = tornado.web.Application([ 
     (r"/", MainHandler), 
    ]) 

    http_server = tornado.httpserver.HTTPServer(application) 
    http_server.listen(options.port) 

    tornado.ioloop.IOLoop.current().start() 

if __name__ == "__main__": 
    main() 
0

나는 Tornado를 사용하여 그것을 할 수 있었다. 나머지 부분 없이도 twisted.web을 다운로드하고 실행할 수있는 것처럼 보이기 때문에 다시 살펴 보겠습니다.
관련 문제