HTML y Pyhton

Iniciado por Cr4id3r, 26 Octubre 2014, 15:39 PM

0 Miembros y 1 Visitante están viendo este tema.

Cr4id3r

Buenas a todos,
os comento mi problema, tengo un servidor Apache corriendo con sitios virtuales y con mod_wsgi implementado, hasta aqui todo correcto, ahora viene la duda..
Tengo mi aplicación en Python preparada:
import serial

a = serial.Serial('/dev/ttyACM0', 9600)
while 1 == 1:
               a.write(1)


Necesito ejecutar esto desde una interfaz web, lo he realizado de la forma mas cazurra que se me ha ocurrido que ha sido en el html ingresar lo siguiente:

<a href="ruta del python"><button>Encender</button></a>

Esto no funciona, era de esperar  :xD
¿Sabeis como podria implementarle en la interfaz web?
Vive solo por lo que estas dispuesto a morir.

engel lex

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Cr4id3r

Gracias por responder engel lex,
puede que me sirva, pero antes necesito saber que error me da, para ello necesito ejecutarlo, es decir a lo que me vengo refiriendo es que necesito ejecutarlo.
Como si en el terminal escribiera "python on.py"
¿Sabes con que código puedo hacer un boton que lo llame? O si es necesario declararlo como una función y llamar a la función, me es indiferente el método.
Mi árbol de directorios lo tengo dispuesto de esta manera ahora mismo

testing/
├── __init__.py
├── manage.py
├── public_html
│   └── index.html
└── testing
    ├── __init__.py
    ├── off.py
    ├── on.py
    ├── settings.py
    ├── test.wsgi
    ├── urls.py
    └── wsgi.py


El conf del servidor virtual lo tengo dispuesto de esta manera:

<VirtualHost *:80>

        ServerName test.com
        ServerAlias www.test.com
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/testing/public_html/
        WSGIScriptAlias /var/www/testing/public_html /var/www/testing/testing/test.wsgi



        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined


</VirtualHost>


¿Alguna idea? :)
Vive solo por lo que estas dispuesto a morir.

MinusFour

Tienes mod_python para Apache:

http://modpython.org/

Lo instalas y deberias poder correr .py con solo llarmalo desde la URL. Depende de ti si quieres poner un AJAX a un boton para que llame al archivo.

Cr4id3r

MinusFour,
antes de nada muchas gracias por participar, desde un principio estuve viendo las opciones y mod_python estaba entre ellas, el problema esta en que mod_python por lo que he leido ya esta obsoleto y tiene riesgos de seguridad, asi que me gustaria hacerlo de la forma correcta directamente.
Pero nuevamente muchas gracias por participar.
Vive solo por lo que estas dispuesto a morir.

MinusFour

¿Exactamente cual es el problema con tu modulo WSGI entonces? ¿Se ejecuta o no tu script? Revisa el log de errores de apache por si se ejecuto el programa, pero si hubo algun fallo.

Cr4id3r

No se ejecuta el script y me da la impresión de que me estoy inventando el codigo para llamar al modulo python.
En el log no tengo ningun error.
:rolleyes:
Le estoy echando un vistazo a django haber si puedo solucionar algo
Vive solo por lo que estas dispuesto a morir.

MinusFour

Cita de: Cr4id3r en 26 Octubre 2014, 21:52 PM
No se ejecuta el script y me da la impresión de que me estoy inventando el codigo para llamar al modulo python.
En el log no tengo ningun error.
:rolleyes:
Le estoy echando un vistazo a django haber si puedo solucionar algo

¿Llamas al script, pero no se ejecuta? ¿Te regresa el texto del script? Vas a tener que asegurarte que tengas el handler puesto correctamente. Me parece que hay unas directivas del modulo que puedes usar para eso:


WSGIScriptAlias


Mira la documentación de mod wsgi:

https://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

Y ojo que el mod_wsgi no es para ejecutar cualquier codigo en python, si no que tiene que implementar la especificacion de WSGI. Creo que es posible desde un controlador de Django (ya que este si la implementa).

De lo contrario vas a tener que correr el archivo python por CGI o por el modulo mod_python.

Cr4id3r

MinusFour, por lo que estoy viendo mi problema esta viniendo de Django, voy a estudiarlo un poco y haber que saco en claro, en cuanto lo solucione posteo para que todos tengamos la solución 😉
Vive solo por lo que estas dispuesto a morir.

MinusFour

Cita de: Cr4id3r en 27 Octubre 2014, 20:01 PM
MinusFour, por lo que estoy viendo mi problema esta viniendo de Django

¿Estás usando Django? Hasta donde tenia entendido, tu querias correr una aplicación de python que no se adhiere al estandard WSGI de python. Aunque mencione que puedes ejecutar el código desde un controlador de Django, yo creo que es mucho para montarse una aplicación tan sencilla. Claro que si ahora te estas pensando en montarte toda una web por Django pues entonces si.

Desde mi punto de vista lo mejor sería leerse WSGI:

Ejemplo de Script

Código (python) [Seleccionar]

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'
    #Tu Codigo aqui

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]


Configuracion del VirtualHost:

Código (apache) [Seleccionar]

<VirtualHost *:80>

    ServerName www.example.com
    ServerAlias example.com
    ServerAdmin webmaster@example.com

    DocumentRoot /usr/local/www/documents

    <Directory /usr/local/www/documents>
    Order allow,deny
    Allow from all
    </Directory>

    WSGIScriptAlias /myapp /usr/local/www/wsgi-scripts/myapp.wsgi

    <Directory /usr/local/www/wsgi-scripts>
    Order allow,deny
    Allow from all
    </Directory>

</VirtualHost>