Ich implementiere eine Gateway-Server-Automatisierung mit Py4j-Modul.Der Gateway-Server muss jedes Mal initiiert werden, wenn der Benutzer die Funktion aufruft.Das Problem, das ich habe, ist, dass ich nicht bin um die Funktion im Hintergrund auszuführen. Hier ist der Code:Ausführen von MVN im Hintergrund von Python Popen und Thread-Funktion
def mvn():
logger = open("log.txt", 'w')
logger.seek(0)
thread1 = Thread(target=Popen, args=("./runJVM.sh"),kwargs=
{"stdout":logger})
thread1.daemon = True
thread1.start()
# stdout, error = proc.communicate()
# logger.write(stdout)
logger.close()
Es gibt zwei Probleme Ich bin vor hier 1) Wenn ich die kwargs zu Logger (eine Protokolldatei Ausgabe zu überprüfen stdout angeben), wirft es mir eine Fehlermeldung, dass stdout hat Mehrere Argumente angegeben.
2) Wenn ich nicht die Option stdout angeben, wird die Ausgabe des Threads auf Ipython-Terminal angezeigt, die ich nicht wollte.
Alles was ich will ist, den Server im Hintergrund aufzurufen, so dass andere Funktionen auf den Java Gateway Server zugreifen können und auf die Methoden zugreifen können, die von ipython verwendet werden können.
Sie können davon ausgehen, dass die mvn-Funktionen einwandfrei funktionieren, wenn Sie direkt durch das Terminal laufen.
Vielen Dank