in meinem Python-Programm benutze ich ein Java/Swing-Programm über Socket als Grafik-Server. Wenn der "Server" nicht läuft, starte ich ihn mit os.command():
Code: Alles auswählen
import socket
import os
SERVER_HOST = "127.0.0.1"
SERVER_PORT = 12000
SERVER_START_COMMAND = 'cd '+SERVER_PATH+'\n'+'java -jar Server.jar '+str(SERVER_PORT)+'&\n'
def connect_server(self):
server_port = SERVER_PORT
server_host = SERVER_HOST
try:
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.settimeout(3)
server_address = (server_host, server_port)
print(server_address)
print ('Verbinde mit: %s port %s' % server_address)
self.sock.connect((server_address))
return True
except:
print('Verbindung fehlgeschlagen !\n versuche, Server zu starten ...')
try:
os.system(SERVER_START_STR)
self.connect_server()
except:
print('Server nicht gefunden !')
return False
Natürlich könnte ich den Server bei Beendigung des Python-Programms auf dem gleichen Weg z.B. mit os.system(ps -n | grep Server...kill...) beenden. Das ist aber bestimmt keine sonderlich elegante Lösung.
Wäre da nicht eine rein pythonische Lösung mit subprozess eine bessere Idee ?
Würde der "Server"-Prozess beim Aufruf per subprozess nicht automatisch bei Beendigung des Python-Programms beendet ?
Grüße
m-o
Anm.: Das mit den exceptions mache ich glaube ich auch noch nicht ganz korrekt ...