Artículo Jose-Tomas Salvador · jul 16, 2024 3m read

Ejecución de aplicaciones WSGI con IPM

Introducción a la ejecución de WSGI en IRIS

Con IRIS 2024+, los usuarios podéis alojar aplicaciones WSGI utilizando Security.Applications. Como ejemplo, un usuario puede hacer algo como esto

Ejemplo de trabajo mínimo

zn "%SYS"
Kill props
Set props("Description") = "Sample WSGI Application"
Set props("MatchRoles") = ":%All"
Set props("WSGIAppLocation") = "/path/to/flaskapp"
Set props("WSGIAppName") = "myapp"
Set props("WSGICallable") = "app"
Set props("DispatchClass") = "%SYS.Python.WSGI" // important, otherwise will be recognized as CSP application
Set sc = ##class(Security.Applications).Create("/flask", .props)
zw sc

donde el directorio /path/to/flaskapp contiene un archivo myapp.py que dice

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello, WSGI!"

Ahora, id a la URL http(s)://://flask/. Debería mostrar "¡Hello, WSGI!" en texto sin formato.

Errores comunes

  1. Si la URL http(s):///flask/ no funciona, comprobad primero la barra diagonal final, que debe estar presente.

  2. Además, cuando se ejecuta por primera vez, flask necesita ser instalado para python embebido (no su intérprete python local a nivel de SO). Comprobad que la instalación se ha realizado correctamente accediendo al intérprete de python embebido y ejecutando import flask.

  3. Finalmente, se debe conceder permiso de lectura, para /path/to/flaskapp/myapp.py y todas las carpetas superiores, al usuario del SO con que se esté ejecutando IRIS .

  4. Si el error sigue sin resolverse, comprobad si hay entradas en messages.log. También podéis poneros en contacto con nosotros a través de posting an issue

Uso de IPM para enviar aplicaciones WSGI de fácil instalación

IPM facilita el proceso:

  1. copiando el directorio de la aplicación flask a un lugar con acceso de lectura garantizado
  2. instalando las dependencias python relevantes en un archivo requirements.txt.

Ejemplo de paquete

Aquí hay un ejemplo que puede instalarse fácilmente donde quiera que IPM (v0.6.3+) esté instalado en IRIS 2024+. Clonad este paquete a un adecuado, e iniciad un terminal IRIS

zn "%SYS"
zpm "load "

Tras la instalación, deberíais poder visitar http(s)://://my/flask/demo/. En mi caso, la URL es http://localhost:8080/iris-ml-wsgi/my/flask/demo/ y se lee:

This is a sample WSGI application using Flask!

Sugerencia: necesitáis instalar zpm siguiendo las instrucciones aquí primero para que el comando zpm funcione.

El module.xml del repositorio anterior también está listado aquí para una referencia rápida



  
    
      flask-demo
      1.0.0
      This is a demo of a flask application
      flask
      
        Shuheng Liu
        InterSystems
        2024
        MIT
        notes
      
      module
      
      

      
    Module installed successfully!