Estoy buscando un servidor de Python HTTP multiproceso bien soportado que admita respuestas de codificación fragmentadas. (Es decir, "Transferencia de codificación: fragmentada" en las respuestas). ¿Para qué sirve la mejor base de servidores HTTP para este fin?Servidor Python HTTP que admite codificación fragmentada?
Respuesta
Soportes trenzados chunked transfer encoding (API link) (consulte también el doc API para HTTPChannel). Hay una serie de proyectos de nivel de producción que usan Twisted (por ejemplo, Apple lo usa para el servidor iCalendar en Mac OS X Server), por lo que es bastante compatible y muy robusto.
Estoy bastante seguro de que los servidores compatibles con WSGI deberían admitir eso. Básicamente, las aplicaciones WSGI devuelven fragmentos iterables, que devuelve el servidor web. No tengo experiencia de primera mano con esto, pero aquí hay un list of compliant servers.
Creo que sería bastante fácil hacer su propia versión, si los servidores WSGI no cumplen con lo que está buscando, usando el built-in CGIHTTPServer de Python. Ya está multiproceso, por lo que dependerá de ti dividir las respuestas.
Twisted admite transferencia fragmentada y lo hace de forma transparente. es decir, si el controlador de su solicitud no especifica una longitud de respuesta, Twisted cambiará automáticamente a transferencia fragmentada y generará un fragmento por llamada a Request.write.
he conseguido hacerlo utilizando Tornado:
#!/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()
- 1. ¿Por qué IIS no admite la codificación de transferencia fragmentada?
- 2. HTTP Codificación de transferencia fragmentada: ¿Cómo se envía "\ r \ n"?
- 3. Descodificación HTTP fragmentada en Java?
- 4. nginx Habilitación de codificación de transferencia fragmentada
- 5. ¿Compatible con WCF? Codificación de transferencia fragmentada
- 6. compresión gzip de la respuesta de codificación fragmentada?
- 7. (fragmentada) HTTP cuerpo del mensaje binario y CRLFs
- 8. ¿Cómo desactivo la codificación de transferencia fragmentada cuando uso contenido dinámico comprimido?
- 9. Codificación fragmentada y encabezado de longitud de contenido
- 10. Compatibilidad con jquery Transferencia de codificación: ¿fragmentada? cómo
- 11. Cómo hacer que PHP genere una respuesta fragmentada
- 12. MMORPG Cliente/Servidor Codificación
- 13. ¿Admite S3 la canalización de HTTP?
- 14. lectura "fragmentada" respuesta con HttpWebResponse
- 15. ¿Qué codificación utiliza el protocolo HTTP?
- 16. ¿Admite PySide Python 3?
- 17. qué idioma del servidor nginx webserver admite
- 18. codificación UTF-8 y HTTP parámetros
- 19. ORM que admite Mono?
- 20. Codificación/decodificación URL con Python
- 21. Usando web.py como servidor HTTP que no bloquea
- 22. Servidor HTTP Slow Python en el host local
- 23. Atascado con servidor HTTP Python con autenticación básica con BaseHTTP
- 24. personalizado simple servidor HTTP de Python no servir archivos CSS
- 25. ¿Cómo mantengo un servidor HTTP python para siempre?
- 26. Enviando "Set-Cookie" en un servidor HTTP de Python
- 27. Qt Servidor HTTP?
- 28. Programación del servidor HTTP
- 29. ligero servidor http C++
- 30. Servidor HTTP simple
Gracias, he oído de trenzado, pero mi primera impresión fue que era un peso pesado poco para mi tarea. Voy a echar un segundo vistazo, ya que parece que puedes descargar y ejecutar solo twisted.web sin el resto de las cosas. – slacy
Entiendo tu sensación ... Twisted tiene una gran API, parece un poco culto y tiene una curva de aprendizaje. También me decepcionó inicialmente, pero a veces encuentro que es la herramienta adecuada para el trabajo :-) –