Introdução ao suporte WSGI

Contexto
A Interface de Gateway de Servidor Web (WSGI) é uma convenção de chamada simples para servidores web encaminharem solicitações para aplicativos web ou frameworks escritos na linguagem de programação Python. WSGI é um padrão Python descrito detalhadamente em PEP 3333.
🤔 Ok, ótima definição, e qual o objetivo com o iris?
O IRIS 2024.2+ possui um novo recurso que permite que você execute aplicativos WSGI diretamente no IRIS. Esse recurso é uma ótima maneira de integrar o IRIS com outros frameworks e bibliotecas Python.
Isso segue a tendência de primeira experiência com Python, onde você pode usar Python para interagir com o IRIS, e agora você também pode executar aplicativos Python diretamente no IRIS.
Como usasr
Para instanciar um aplicativo WSGI no IRIS, você precisa configurá-lo na seção Segurança->Aplicações->Aplicações Web do Portal de Gerenciamento IRIS.
Exemplo simples com Flask:
Arquivo chamado app.py no diretório /irisdev/app/community:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
Configuração UI

Nesta seção, você pode configurar a aplicação WSGI providenciando:
Nome da aplicação
Isso corresponde ao nome de arquivo da aplicação WSGI
ex:
app.py, mas sem a extensão.py:appNome chamável
A função chamável que será chamada pelo servidor WSGO
ex:
appcorresponde à variávelappno arquivoapp.pyapp = Flask(__name__)
Diretório de aplicação WSGI
- O caminho onde o aplicativo WSGI está localizado
- ex:
/irisdev/app/community
Tipo de protocolo Python
- Pode ser
wsgiouasgiwsgié o valor padrão e será usado neste exemploasgié para aplicações assíncronas- nós suportamos
asgisincronicamente por hora com o adaptadora2wsgi
- nós suportamos
- Pode ser
DEBUG *Se marcado, o aplicativo WSGI será executado no modo de depuração
- Isso é útil para fins de desenvolvimento, pois quaisquer alterações no aplicativo WSGI serão recarregadas automaticamente
CPF Merge
Você também pode configurar o aplicativo WSGI usando CPF. Aqui está um exemplo de configuração
[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
Arquivos de Log
Os logs do aplicativo WSGI são armazenados no arquivo WSGI.log localizado no diretório mgr da instância.
Exemplos
Here are some examples of WSGI applications that you can run on IRIS, they aim to show how to run different Python frameworks on IRIS.
Basically, the use case will be the same for all the frameworks:
Endpoints
/iris- Retorna um objeto JSON com as 10 principais classes presentes no namespace IRISAPP./interop- Um endpoint de ping para testar o framework de interoperabilidade do IRIS./posts- Um endpoint CRUD simples para um objeto Post/comments- Um endpoint CRUD simples para um objeto Comentário.
Modelo de Objeto
Objeto Post:
- id
- título
- conteúdo
Objeto Comentário
- id
- post_id (chave estrangeira para Post)
- conteúdo
Flask
- Github: iris-flask-template
- Artigo: running-flask-applications-iris
Django
- Github: iris-django-template
- Artigo: running-django-applications-iris
FastAPI
- Github: iris-fastapi-template
- Artigo: running-fastapi-applications-iris
Limitações
- O ASGI é suportado de forma síncrona por enquanto com o adaptador
a2wsgi - aplicações
tornado( jupyter, streamlit, .. ) não são suportadas, pois não são compatíveis com WSGI.