Clase8

Páginas: 12 (2928 palabras) Publicado: 5 de mayo de 2015
Curso Python en 8 clases
Clase 8: Python en la web
Autor:
Versión:
Licencia:

Sebastián Bassi
1.5
Creative Commons BY-NC-SA 2.5. (ver texto completo)

Introducción
Hay distintos modos de ejecutar código Python en el servidor. Cada modo tiene sus ventajas y
desventajas. El método mas fácil es via CGI, que ejecuta una instancia de Python cada vez que se lo
llama. Es a su vez el método mas lento. Elcódigo Python puede correrse "embebido" en el HTML al estilo
PHP, aunque no se lo recomienda debido a que el código resultante es díficil de mantener. Para evitar
tener que levantar un interprete cada vez que se ejecuta una página hecha dinámicamente con Python,
existen alternativas como mod_python y WSGI.
En esta clase veremos los fundamentos de cada método hasta llegar a usar un web frameworkcompleto
como web2py.

CGI
Configurando el servidor web para CGI
Basicamente hay que indicar el archivo donde se van a ejecutar los scripts, la extensión de los mismos y
un alias para no mostrar el path a los scripts.
Si el directorio de scripts se encuentra en /var/www/apache2-default/cgi-bin/, tenemos que incluir las
siguientes lineas en el archivo de configuración de Apache:

Options +ExecCGI

La extensión se indica asi:
AddHandler cgi-script .py
El alias se indica con la directiva ScriptAlias:
ScriptAlias /cgi-bin/ /var/www/apache2-default/cgi-bin/

¡No olvidar!
Hay que especificar que el script tenga permiso de ejecución:
chmod a+x MyScript.py

Ejemplo de código en CGI:

#!/usr/bin/env python
import time
print("Content-Type:text/html\n")
print("Test page")
print("

HELLO WORLD!

")
print("Local time: %s"%time.asctime(time.localtime()))
print("")
Este código genera el siguiente HTML:
Test page

HELLO WORLD!


Local time: Mon Apr 12 15:11:06 2010

(ver pastecode.com.ar/cgi-bin/test1.cgi.)
Si bien elresultado no aporta mucho porque no tiene interactividad, sirve para comprobar que el servidor
está preparado para correr aplicaciones Python.

Página generada dinámicamente con datos provistos por el
usuario
Una manera típica de ingresar datos es vía un form de HTML:
Formulario muy simple


Tu nombre:




Este form es mostrado de esta manera:

El siguiente código procesa los datos ingresados:
#!/usr/bin/env python
import cgi
print "Content-Type: text/html\n"
form = cgi.FieldStorage()
name = form.getvalue("username","NN")
print("Un script CGI")
print("

Hola%s

"%name)

Por lo que obtenemos una respuesta como esta:

Nota: Para ver los errores via HTML, usar cgitb.enable() (usarlo solo en diseño, no en producción).

Mod_Python
El problema principal con CGI es que cada vez que llamamos a una página de este tipo, el interprete de
Python se ejecuta. Esto no escala bien debido a los requerimientos de RAM y CPU que convella levantar
un interprete por cadarequest. Otro problema asociado con CGI es la velocidad de ejecución (que es
baja por la razón citada).
Una manera de evitar estos inconvenientes es tener un interprete corriendo permanentemente y ejecutar
en él todas las peticiones. Esto es provisto por el módulo de Apache mod_python.
Con Mod_Python se puede ejecutar 1200 request/s contra 23 request/s como en CGI.

Configurando el servidor web paraMod_Python
Instalación en Linux:
apt-get install libapache-mod-python2.5
Luego hay que modificar el archivo de configuración de Apache de la siguiente manera:

AddHandler mod_python .py
PythonHandler mptest
PythonDebug On

Note que mptest es el nombre de la aplicación que se encargará de la petición. Se puede cambiar.
Entonces la aplicación se llama...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • clase8
  • Clase8
  • clase8 2

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS