2009-01-31 10 views
8

He estado escribiendo un buen número de aplicaciones wsgi más pequeñas últimamente y estoy buscando un servidor web que se pueda distribuir, preconfigurado para ejecutar la aplicación específica. Sé que hay cosas como twisted y cherrypy que pueden servir para las aplicaciones de wsgi, pero parecen faltar una pieza clave de funcionalidad para mí, que es la capacidad de "pseudostream" de archivos grandes usando el encabezado de rango http. ¿Hay un servidor web disponible bajo una licencia BSD o similar que se puede distribuir como un ejecutable independiente en cualquiera de las principales plataformas que es capaz tanto de proxy a un servidor wsgi (como cherrypy o similar) Y de servir archivos de gran tamaño utilizando el http rango de rango?Minimal, Standalone, Distribuidor, servidor web multiplataforma

Respuesta

3

¿Qué pasa con Apache + mod_wsgi? Apache ya es multiplataforma; a menudo ya está instalado (excepto en Windows).

Es posible que también desee consultar lighttpd, hay algunos blogs sobre cómo configurarlo para trabajar con WSGI. Consulte http://cleverdevil.org/computing/24/python-fastcgi-wsgi-and-lighttpd y http://redmine.lighttpd.net/issues/show/1523

+0

No hay nada realmente "malo" con Apache, es un gran servidor, pero estoy buscando algo que pueda distribuir con mi solicitud, en un estado pre-configurados , por lo que se ejecuta fuera de la caja en cualquier plataforma (me doy cuenta de que esto probablemente requerirá una "caja" por plataforma, pero eso está bien). – user61000

5

Lighttpd tiene una licencia BSD, por lo que debería poder agruparla si lo desea.

Dice que es para aplicaciones pequeñas, así que supongo que eso significa que las interfaces web pequeñas, locales y de un solo usuario están servidas por un pequeño servidor http. Si ese es el caso, entonces cualquier implementación de Python debería funcionar. Simplemente use algo como py2exe para empaquetarlo (de hecho, hubo una pregunta relacionada con el empaquetado de programas python aquí en SO no hace mucho tiempo).

Actualización, re: rango encabezado: El servidor http predeterminado de python puede no ser compatible con el encabezado de rango que desee, pero es bastante fácil escribir su propio controlador o una pequeña aplicación de wsgi para hacer la lógica, especialmente si todo lo que está haciendo es transmitir un archivo. No sería demasiadas líneas:

def stream_file(environ, start_response): 
    fp = open(base_dir + environ["PATH_INFO"]) 
    fp.seek(environ["HTTP_CONTENT_RANGE"]) # just an example 
    start_response("200 OK", (('Content-Type', "file/type"))) 
    return fp