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)://. Debería mostrar "¡Hello, WSGI!" en texto sin formato.
Errores comunes
-
Si la URL http(s)://
/flask/ no funciona, comprobad primero la barra diagonal final, que debe estar presente. -
Además, cuando se ejecuta por primera vez,
flasknecesita 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 ejecutandoimport flask. -
Finalmente, se debe conceder permiso de lectura, para
/path/to/flaskapp/myapp.pyy todas las carpetas superiores, al usuario del SO con que se esté ejecutando IRIS . -
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:
- copiando el directorio de la aplicación flask a un lugar con acceso de lectura garantizado
- 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)://. 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!