Troubleshooting

Python & SAS Viya : Résoudre l'erreur de connexion au serveur CAS

Simon 30/09/2024 10 vues

L'un des premiers pas dans l'intégration de Python avec SAS© Viya consiste à établir une connexion avec le serveur CAS (Cloud Analytic Services) via la bibliothèque SWAT (SAS© Scripting Wrapper for Analytics Transfer).

Bien que le code Python pour initier cette connexion soit simple, il arrive fréquemment que la tentative échoue avec un message d'erreur indiquant que la connexion n'a pas pu être établie. Pourtant, dans le même environnement, tout semble fonctionner correctement depuis SAS© Studio. Pourquoi cette différence et comment corriger le tir ?

Illustration

Le Symptôme

Vous exécutez un script Python standard pour vous connecter :

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

Au lieu d'obtenir un objet de connexion valide, votre script renvoie une erreur de connexion (ex: Connection refused ou Could not connect to host). Paradoxalement, si vous lancez l'instruction cas my_session; dans SAS© Studio sur la même machine, la session démarre sans problème.

Les Causes Probables

Cette erreur pointe généralement vers un problème de connectivité réseau plutôt que vers un problème de configuration logicielle de SAS© ou Python.

  1. Le Pare-feu (Firewall) : C'est le coupable le plus fréquent. Le port binaire par défaut pour CAS est le 5570. Si ce port n'est pas ouvert pour les connexions entrantes sur le serveur, votre client Python (qui est souvent considéré comme une connexion "externe", même s'il est sur le même réseau) sera bloqué.

  2. Le Nom d'Hôte (Hostname) : Parfois, le nom d'hôte spécifié dans le script Python n'est pas résolu correctement par la machine cliente, ou l'adresse IP mappée n'est pas accessible.

La Solution

Pour rétablir la communication entre votre client Python et le serveur CAS, suivez ces deux étapes de vérification :

1. Vérifier et Ouvrir le Port 5570

Assurez-vous que le port 5570 est bien ouvert sur le pare-feu du serveur hébergeant SAS© Viya. Ce port est utilisé pour la communication binaire propriétaire, qui est la méthode par défaut et la plus performante pour SWAT.

2. Ajuster le Hostname

Si vous travaillez en local ou sur une machine virtuelle (comme une image de démo), essayez de remplacer le nom de domaine complet par localhost ou 127.0.0.1 si le client Python s'exécute sur la même machine que le serveur.

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

Une fois le port ouvert et le nom d'hôte correctement ciblé, la connexion devrait s'établir instantanément.

En résumé

Si SAS© Studio fonctionne mais pas Python, c'est souvent le réseau qui bloque.

  • Vérifiez le firewall : Le port 5570 doit être accessible.

  • Vérifiez l'adresse : Testez la connexion vers localhost ou l'IP directe.