Pracuję nad moim skryptem Pythona, aby uruchomić serwer, może być w tle lub w innym procesie, a następnie wykonać dalsze przetwarzanie przed zabiciem uruchomionego serwera.
Gdy reszta przetwarzania zakończy się, zabij uruchomiony serwer.
Na przykład
server_cmd = "launch_server.exe -source "+ inputfile
print server_cmd
cmd_pid = subprocess.Popen(server_cmd).pid
...
...
... #Continue doing some processing
cmd_pid.terminate() # Once the processing is done, terminate the server
Niektóre z nich nie kontynuują skryptuuruchomienie serwera, ponieważ serwer może działać w nieskończonej pętli nasłuchiwania żądania. Czy istnieje dobry sposób na wysłanie tego procesu w tle, tak aby nie oczekiwał wejścia linii poleceń.
Używam Pythona 2.7.8
Odpowiedzi:
2 dla odpowiedzi № 1To dziwne, że twój skrypt nie jest kontynuowany po uruchomieniu polecenia serwera subprocess
moduł, Popen
uruchamia kolejny proces potomny, gdy proces nadrzędny (skrypt) powinien przejść dalej.
Jednak w twoim kodzie jest już błąd: cmd_pid
to jest int
obiekt i nie ma terminate
metoda. Powinieneś użyć subprocess.Popen
obiekt do wywołania terminate
metoda.
2 dla odpowiedzi nr 2
Niewielka zmiana rozwiązała problem
server_proc = subprocess.Popen (serwer_cmd, stdout = subprocess.PIPE)
server_proc.terminate ()
Dzięki Xu za poprawienie w zakończeniu.