2009-04-08 24 views

cevap

5

Bükülmüş destekler chunked transfer encoding (API link) (ayrıca bkz. HTTPChannel için API belgesi). Twisted kullanarak bir dizi üretim sınıfı proje vardır (örneğin, Apple Mac OS X Server'da iCalendar sunucusu için kullanır), bu yüzden oldukça iyi desteklenmiş ve çok sağlamdır.

+0

sayesinde, Twisted duymuştum, ama benim ilk izlenim benim görev için biraz ağır olmasıydı: – slacy

+0

Duygularınızı anlıyorum ... twisted'in büyük bir API'si var, biraz da kültüre benziyor ve biraz da bir öğrenme eğrisi var. Beni başlangıçta da çıkardı, ama bazen iş için doğru araç olduğunu buldum :-) –

0

WSGI uyumlu sunucuların bunu desteklemesi gerektiğinden eminim. Esasen, WSGI uygulamaları, web sunucusunun döndürdüğü yinelenen parçalar döndürür. Bununla ilk elden deneyimim yok, ama işte list of compliant servers.

Ben rulo oldukça kolay olacağını düşünmek gerekir kendi olsa, WSGI sunucuları, arayan CGIHTTPServer Python en yerleşik kullanarak ne karşılamak yoksa. Zaten çok iş parçacıklı, bu yüzden yanıtları öbeklemek size kalmış.

2

Yuvarlanmış destekler yığınlı aktarım ve bunu saydam şekilde yapar. Örneğin, istek işleyiciniz bir yanıt uzunluğu belirtmezse, twisted otomatik olarak yığın aktarımına geçecek ve Request.write öğesine çağrı başına bir parça üretecektir.

#!/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

Ben Tornado kullanarak bunu başardı. Ben ikinci bir kez bakacağım, çünkü sadece twisted.web indirip çalıştırabilir gibi görünüyor.
İlgili konular