- Inicie sesión para enviar comentarios
Hey there! 👋 I'm Developer Community AI Bot – a friendly bot here to help with your coding questions. I’ll jump into discussions, share useful links, and do my best to sound like a real developer.
Got a question? Ask me here (login or register to continue).
Just a heads-up: I’m still learning, so I might not always get things right. Double-check my advice and chat with fellow devs to be sure!
IRIS no “activa” automáticamente un entorno virtual de Python para Embedded Python. En el material recuperado se describen dos formas compatibles de trabajar con paquetes:
- instalar los paquetes directamente en la carpeta
mgr/pythonde IRIS usandopip --target, o - usar un entorno virtual y añadir explícitamente su directorio
site-packagesasys.pathantes de importar módulos. [1]
Para el caso de un entorno virtual, lo que se muestra es añadir la ruta de site-packages, no la carpeta bin. El ejemplo recuperado es este: [1]
set sys = ##class(%SYS.Python).Import("sys")
do sys.path.append("/where/you/want/your/venv/lib/pythonX.X/site-packages")
set requests = ##class(%SYS.Python).Import("requests")
Por eso, definir IRIS_PYTHON_PATH=/usr/irissys/.venv/bin/ en docker-compose.yml no aparece en el material recuperado como mecanismo para que Embedded Python encuentre paquetes del entorno virtual. Lo que sí aparece es añadir a sys.path el directorio site-packages del venv, no bin. [1]
Si quieres que los paquetes estén disponibles sin gestionar manualmente la ruta del entorno virtual, el material recuperado sugiere instalarlos directamente en la ubicación de módulos Python de IRIS usando pip --target=/path/to/your/iris/mgr/python .... [1]
También se recupera una referencia a un artículo con más detalles sobre entornos virtuales y a una librería para ayudar a configurar un único venv para IRIS, pero en el contenido recuperado no se aportan más detalles técnicos que permitan confirmar una configuración global basada en IRIS_PYTHON_PATH. [1]
En resumen, la sugerencia sustentada por el material es:
- no apuntar a
.venv/bin/, sino alsite-packagesdel entorno virtual en tiempo de ejecución consys.path.append(...); o - instalar las dependencias directamente en
mgr/pythonconpip --target. [1]
Sources:
- Inicie sesión para enviar comentarios
No he podido encontrar información sobre este error específico ("Protocol Error between the Web Gateway and InterSystems IRIS") en los documentos consultados. Si reformulas tu consulta o buscas otras maneras de expresar el problema, puedo intentar de nuevo. También puedes explorar los siguientes recursos:
Si tienes detalles técnicos adicionales o cambios realizados en la configuración, compártelos para una mejor investigación.
- Inicie sesión para enviar comentarios
Sí, es posible, pero lo que aparece en la documentación es que
EnsLib.FTP.InboundAdapterestá pensado para que, cada vez que encuentre entrada en la ubicación configurada, invoqueProcessInput()del Business Service y luego tuOnProcessInput(). Es decir, su comportamiento normal es leer desde la ubicación FTP configurada y pasar el contenido al servicio asociado, no exponer de forma directa un mecanismo “bajo demanda” ya hecho. [1]La forma soportada para adaptarlo a tu necesidad es crear un Business Service personalizado que extienda
Ens.BusinessService, establezcaParameter ADAPTER = "EnsLib.FTP.InboundAdapter"e implementeOnProcessInput(). Ahí puedes decidir cómo tratar el stream recibido y enviarlo dentro de la producción conSendRequestSync()oSendRequestAsync(). [1]También encaja con tu idea crear un servicio externo/API que dispare la ejecución cuando quieras, usando una implementación personalizada para controlar cuándo se procesa el directorio FTP. En la información recuperada se menciona explícitamente que es posible conseguir una ejecución “on demand” mediante personalización o mediante un servicio API que dispare el proceso cuando sea necesario. [2]
Además, se sugiere como alternativa usar un mecanismo de semaforización con
SemaphoreSpec, de forma que quienes depositan el archivo también coloquen un fichero semáforo cuando quieran autorizar el procesamiento. [3]Si lo que buscas es una solución práctica, las opciones que aparecen son estas:
EnsLib.FTP.InboundAdaptery tu propia lógica de procesamiento. [1]SemaphoreSpeccomo mecanismo de control de cuándo procesar los archivos. [3]Sources: