Troubleshooting

Python & SAS Viya: Resolver el error de conexión al servidor CAS

Simon 30/09/2024 4 vues

Uno de los primeros pasos en la integración de Python con SAS© Viya es establecer una conexión con el servidor CAS (Cloud Analytic Services) a través de la biblioteca SWAT (SAS© Scripting Wrapper for Analytics Transfer).

Aunque el código Python para iniciar esta conexión es simple, es frecuente que el intento falle con un mensaje de error que indica que no se pudo establecer la conexión. Sin embargo, en el mismo entorno, todo parece funcionar correctamente desde SAS© Studio. ¿Por qué esta diferencia y cómo corregirlo?

Illustration

El Síntoma

Ejecutas un script Python estándar para conectarte:

New Buffer RO
import swat
conn = swat.CAS('mon-serveur', 5570, 'user', 'password')
~
~

En lugar de obtener un objeto de conexión válido, tu script devuelve un error de conexión (por ejemplo, Connection refused o Could not connect to host). Paradójicamente, si ejecutas la instrucción cas my_session; en SAS© Studio en la misma máquina, la sesión se inicia sin problemas.

Las Causas Probables

Este error generalmente apunta a un problema de conectividad de red en lugar de un problema de configuración de software de SAS© o Python.

  1. El Cortafuegos (Firewall): Es el culpable más frecuente. El puerto binario predeterminado para CAS es el 5570. Si este puerto no está abierto para las conexiones entrantes en el servidor, tu cliente Python (que a menudo se considera una conexión "externa", incluso si está en la misma red) será bloqueado.

  2. El Nombre de Host (Hostname): A veces, el nombre de host especificado в el script de Python no se resuelve correctamente por la máquina cliente, o la dirección IP mapeada no es accesible.

La Solución

Para restablecer la comunicación entre tu cliente Python y el servidor CAS, sigue estos dos pasos de verificación:

1. Verificar y Abrir el Puerto 5570

Asegúrate de que el puerto 5570 esté abierto en el cortafuegos del servidor que aloja SAS© Viya. Este puerto se utiliza para la comunicación binaria propietaria, que es el método predeterminado y más eficiente para SWAT.

2. Ajustar el Hostname

Si trabajas en local o en una máquina virtual (como una imagen de demostración), intenta reemplazar el nombre de dominio completo por localhost o 127.0.0.1 si el cliente Python se ejecuta en la misma máquina que el servidor.

New Buffer RO
# Essai avec localhost si le client est sur le serveur
conn = swat.CAS('localhost', 5570, 'user', 'password')
~
~

Una vez que el puerto esté abierto y el nombre de host esté correctamente configurado, la conexión debería establecerse instantáneamente.

En resumen

Si SAS© Studio funciona pero Python no, a menudo es la red la que bloquea.

  • Verifica el firewall: El puerto 5570 debe estar accesible.

  • Verifica la dirección: Prueba la conexión a localhost o la IP directa.