Troubleshooting

Python & SAS Viya: Behebung des Verbindungsfehlers zum CAS-Server

Simon 30/09/2024 3 vistas

Einer der ersten Schritte bei der Integration von Python mit SAS© Viya ist der Aufbau einer Verbindung zum CAS-Server (Cloud Analytic Services) über die Bibliothek SWAT (SAS© Scripting Wrapper for Analytics Transfer).

Obwohl der Python-Code zur Initiierung dieser Verbindung einfach ist, schlägt der Versuch häufig mit einer Fehlermeldung fehl, die besagt, dass keine Verbindung hergestellt werden konnte. Dennoch scheint in derselben Umgebung alles von SAS© Studio aus korrekt zu funktionieren. Warum dieser Unterschied und wie kann man das Problem beheben?

Illustration

Das Symptom

Sie führen ein Standard-Python-Skript aus, um eine Verbindung herzustellen:

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

Anstatt ein gültiges Verbindungsobjekt zu erhalten, gibt Ihr Skript einen Verbindungsfehler zurück (z. B. Connection refused oder Could not connect to host). Paradoxerweise startet die Sitzung problemlos, wenn Sie die Anweisung cas my_session; in SAS© Studio auf demselben Rechner ausführen.

Die wahrscheinlichen Ursachen

Dieser Fehler deutet in der Regel eher auf ein Problem mit der Netzwerkkonnektivität als auf ein Softwarekonfigurationsproblem von SAS© oder Python hin.

  1. Die Firewall: Dies ist der häufigste Schuldige. Der Standard-Binärport für CAS ist 5570. Wenn dieser Port auf dem Server nicht für eingehende Verbindungen geöffnet ist, wird Ihr Python-Client (der oft als „externe“ Verbindung betrachtet wird, auch wenn er sich im selben Netzwerk befindet) blockiert.

  2. Der Hostname: Manchmal wird der im Python-Skript angegebene Hostname von der Client-Maschine nicht korrekt aufgelöst oder die zugeordnete IP-Adresse ist nicht erreichbar.

Die Lösung

Um die Kommunikation zwischen Ihrem Python-Client und dem CAS-Server wiederherzustellen, führen Sie diese beiden Überprüfungsschritte aus:

1. Überprüfen und Öffnen des Ports 5570

Stellen Sie sicher, dass der Port 5570 in der Firewall des Servers, auf dem SAS© Viya gehostet wird, geöffnet ist. Dieser Port wird für die proprietäre binäre Kommunikation verwendet, die die Standardmethode und die leistungsstärkste für SWAT ist.

2. Anpassen des Hostnamens

Wenn Sie lokal oder auf einer virtuellen Maschine (wie einem Demo-Image) arbeiten, versuchen Sie, den vollständigen Domainnamen durch localhost oder 127.0.0.1 zu ersetzen, wenn der Python-Client auf derselben Maschine wie der Server ausgeführt wird.

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

Sobald der Port geöffnet und der Hostname korrekt ausgerichtet ist, sollte die Verbindung sofort hergestellt werden.

Zusammenfassend

Wenn SAS© Studio funktioniert, aber Python nicht, blockiert oft das Netzwerk.

  • Überprüfen Sie die Firewall: Der Port 5570 muss zugänglich sein.

  • Überprüfen Sie die Adresse: Testen Sie die Verbindung zu localhost oder der direkten IP.