Introducción al soporte WSGI

Contexto
La Interfaz de Pasarela de Servidor Web (WSGI, por sus siglas en inglés) es una convención de llamada para que los servidores web puedan reenviar solicitudes a aplicaciones o frameworks web escritos en el lenguaje de programación Python. WSGI es un estándar de Python descrito en detalle en PEP 3333.
🤔 Ok, gran definición, ¿y qué tiene que ver con IRIS?
IRIS 2024.2+ tiene una nueva característica que os permite ejecutar aplicaciones WSGI directamente en IRIS. Esta característica es una excelente manera de integrar IRIS con otros frameworks y bibliotecas de Python.
Esto sigue la tendencia de la experiencia Python primero, donde podéis usar Python para interactuar con IRIS, y ahora también podéis ejecutar aplicaciones Python directamente en IRIS.
Cómo usarla
Para instanciar una aplicación WSGI en IRIS, necesitáis configurarla en la sección Seguridad->Aplicaciones->Aplicaciones Web del Portal de Gestión de IRIS.
Ejemplo simple de Flask:
Archivo llamado app.py en el directorio /irisdev/app/community:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
Configuración de la Interfaz de Usuario

En esta sección, podéis configurar la aplicación WSGI introduciendo lo siguiente:
Nombre de Aplicación
esto corresponde al nombre del archivo de la aplicación WSGI.
Ejemplo:
app.pypero sin la extensión.py:app.Nombre de la función a llamar
la función invocable que será llamada por el servidor WSGI
por ejemplo,
appcorresponde a la variableappen el archivoapp.pyapp = Flask(__name__)
Directorio de aplicaciones WSGI
- la ruta donde se encuentra la aplicación WSGI
- ej:
/irisdev/app/community
Tipo de protocolo Python
- puede ser
wsgioasgiwsgies el valor por defecto y el utilizado en este ejemploasgies para aplicaciones asíncronas- por ahora soportamos
asgide forma sincronizada con el adaptadora2wsgi
- por ahora soportamos
- puede ser
DEBUG
- si está marcada, la aplicación WSGI se ejecutará en modo depuración
- esto es útil para fines de desarrollo, ya que cualquier cambio en la aplicación WSGI se recargará automáticamente
- si está marcada, la aplicación WSGI se ejecutará en modo depuración
Fusión fichero CPF
También podéis configurar la aplicación WSGI utilizando el fichero de configuración CPF de IRIS. He aquí un ejemplo de configuración:
[Actions]
CreateApplication:Name=/flask,NameSpace=IRISAPP,WSGIAppLocation=/irisdev/app/community/,WSGIAppName=app,WSGICallable=app,Type=2,DispatchClass=%SYS.Python.WSGI,MatchRoles=:%ALL,WSGIDebug=0,WSGIType=0
Archivos de registro
Los registros de la aplicación (logs) WSGI se almacenan en el archivo WSGI.log ubicado en el directorio mgr de la instancia.
Ejemplos
Aquí tenéis algunos ejemplos de aplicaciones WSGI que podéis ejecutar en IRIS, pretenden mostrar cómo ejecutar diferentes frameworks de Python en IRIS.
Básicamente, el caso de uso será el mismo para todos los frameworks:
Endpoints
/iris- Devuelve un objeto JSON con las 10 principales clases presentes en el espacio de nombres IRISAPP./interop- Un endpoint que hará de "ping" para probar el framework de interoperabilidad de IRIS./posts- Un endpoint CRUD sencillo para un objeto Post./comments- Un endpoint CRUD sencillo para un objeto Comment.
Modelo de objeto
Objeto Post:
- id
- title
- content
Objeto Comment:
- id
- post_id (foreign key to Post)
- content
Flask
- Github: iris-flask-template
- Article: running-flask-applications-iris
Django
- Github: iris-django-template
- Article: running-django-applications-iris
FastAPI
- Github: iris-fastapi-template
- Article: running-fastapi-applications-iris
Limitaciones
- El ASGI es soportado sincrónicamente por ahora con el adaptador
a2wsgi. - Las aplicaciones
tornado( jupyter, streamlit, .. ) no están soportadas ya que no son compatibles con WSGI.
Comments
buenas
estoy siguiendo tu ejemplo para probar el hola mundo con la versión 2024.3 de Iris
como es una actualización aun tengo el servidor Web para Iris funcionando para acceder al panel de control
si ejecuto http://192.168.1.101:57772/flask/
me funciona el hola mundo correctamente!!!!
Hello, World!
pero si quiero abrir la pagina con el apache 2.4 que me sirve las paginas csp me da este error:
Forbidden
You don't have permission to access /flask/ on this server.
supongo que falta alguna configuración en el apache
gracias
Hola César,
Es probable que tengas alguna configuración en tu Apache que te impida probarlo correctamente. Puede ser un tanto difícil solucionar en un par de comentarios del artículo :)
Lo que puedes hacer es probar el ejemplo que ya está preparado en iris-flask-template y así puedes probar directamente con todos los endpoints.