Есть 2 проблемы:
1.) Subprocess.call () ждет, пока java сервер не завершится.
2.) Когда родительский (Python) процесс останавливается, обычно дочерний процесс будет убит.
Если вам все еще нужно сделать это с помощью сценария Python, вы можете запустить сервер java в отдельной группе процессов, чтобы он был отделен от родительского (Python процесс) - это работает только в * nix OS:
import os
import time
import subprocess
p = subprocess.Popen(
['nohup', 'java', '=Xmx12G', '-jar', 'jar.jar', '--build', '../foo', '--inMemory']
stdout=open('/tmp/logOut.log', 'w'),
stderr=open('/tmp/logErr.log', 'w'),
preexec_fn=os.setpgrp
)
while True:
if 'Grizzly server running' in open('/tmp/logOut.log').read():
break
time.sleep(1)
Примечание: вам нужно перенаправить файлы и прочитать их в Python, если вы подключитесь к скрипту Python, и скрипт выйдет из дочернего процесс убит (независимо от того, развязаны ли процессы)