2011-03-11 10 views
5

Tengo una aplicación web sencilla para compilar, y estoy empezando a perder el tiempo con mod_wsgi. En varios tutoriales, la primera aplicación hola mundo se ve algo como lo siguiente:¿por qué usar wsgiref simple_server?

def application(environ,start_response): 
    response_body = 'Hello World' 
    status = '200 OK' 

    response_headers = [('Content-Type', 'text/plain'), 
         ('Content-Length', str(len(response_body)))] 

    start_response(status, response_headers) 
    return [response_body] 

Luego, más tarde, la aplicación incluye un servidor wsgi usando wsgiref, alguna variación de:

from wsgiref.simple_server import make_server 

def application(environ, start_response): 
    response_body = 'Hello World' 
    status = '200 OK' 

    response_headers = [('Content-Type', 'text/plain'), 
          ('Content-Length', str(len(response_body)))] 

    start_response(status, response_headers) 
    return [response_body] 

httpd = make_server('localhost', 8000, application) 
httpd.serve_forever() 

La aplicación funciona sin el servidor, entonces, ¿para qué sirve el servidor?

Respuesta

7

Supongo que en el tutorial se supone que no tiene instalado y ejecutándose mod_wsgi. De esta forma, puede ejecutar el script desde la línea de comando y se iniciará el servidor wsgiref ejecutando la aplicación para que pueda probarlo sin tener que instalar Apache y mod_wsgi.

+0

razones para utilizarlo una vez que haya ejecutado mod_wsgi ... ¿tal vez se beneficie durante las pruebas? – jmilloy

+1

Bueno, podría ser más fácil ejecutarlo en 'pdb' cuando lo ejecuta desde la línea de comando con' wsgiref', pero aparte de eso, no lo creo. Si pones el código de arranque 'wsgiref' en un bloque' if __name__ == "__main __": ', deberías poder cambiar fácilmente entre los dos si lo necesitas por cualquier razón. –

+0

¿Deberíamos usar también wsgiref.simple_server en producción, es decir, sin ningún Apache o Nginx? – giga