Artículo
· 16 jul, 2024 Lectura de 4 min

Introducción al soporte WSGI

wsgi_logo

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

image

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.py pero 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, app corresponde a la variable app en el archivo app.py

    • app = 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 wsgi o asgi
    • wsgi es el valor por defecto y el utilizado en este ejemplo
    • asgi es para aplicaciones asíncronas
      • por ahora soportamos asgi de forma sincronizada con el adaptador a2wsgi
  • 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

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

Django

FastAPI

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.
Comentarios (0)1
Inicie sesión o regístrese para continuar