Python 服务器运行时程序暂停
Python program pauses when server runs
我正在制作一个 python 程序,它与 minecraft 服务器通信并告诉它启动、停止或任何其他命令。该程序读取电子邮件并执行电子邮件中给出的命令。当程序输入启动服务器的命令时,它会冻结python程序,直到minecraft服务器停止。
我试图让程序打开一个启动服务器的批处理文件,但我没有办法让程序关闭它,或者输入命令,或者读取控制台。
if data[0]+data[1]+data[2]+data[3]+data[4]+data[5] == 'start ':
comm = data.replace('start ','')
try:
mb = int(float(comm)*1024)
#calls the command to start the server
call('java -Xmx' + str(mb) + 'M -Xms' + str(mb) + 'M -jar server.jar nogui')
#program freezes here until server is stopped
except Exception:
call('java -Xmx1024M -Xms1024M -jar server.jar nogui')
print("started server")
elif data == "stop server" or data == "stop":
call('stop')
elif data[0]+data[1]+data[2]+data[3]+data[4] == 'call ':
comm = data.replace('call ','')
call(comm)
print("called command")
elif data[0]+data[1]+data[2] == 'op ':
comm = data
call(comm)
print("op player")
else:
print("not a command")
deletemail(mail,i)
print("deleted item")
我希望看到该程序继续运行并回复电子邮件,但它却冻结了。服务器停止后程序继续正常关闭。我知道这不是错误,但是有没有办法让 python 程序在服务器处于 运行 时继续运行?
最好使用子流程来处理这个问题。您可以使用 popen 来继续 运行 您的脚本并发送命令。 Here 是关于使用 popen 的一个很好的答案,它展示了如何发送命令。
我正在制作一个 python 程序,它与 minecraft 服务器通信并告诉它启动、停止或任何其他命令。该程序读取电子邮件并执行电子邮件中给出的命令。当程序输入启动服务器的命令时,它会冻结python程序,直到minecraft服务器停止。
我试图让程序打开一个启动服务器的批处理文件,但我没有办法让程序关闭它,或者输入命令,或者读取控制台。
if data[0]+data[1]+data[2]+data[3]+data[4]+data[5] == 'start ':
comm = data.replace('start ','')
try:
mb = int(float(comm)*1024)
#calls the command to start the server
call('java -Xmx' + str(mb) + 'M -Xms' + str(mb) + 'M -jar server.jar nogui')
#program freezes here until server is stopped
except Exception:
call('java -Xmx1024M -Xms1024M -jar server.jar nogui')
print("started server")
elif data == "stop server" or data == "stop":
call('stop')
elif data[0]+data[1]+data[2]+data[3]+data[4] == 'call ':
comm = data.replace('call ','')
call(comm)
print("called command")
elif data[0]+data[1]+data[2] == 'op ':
comm = data
call(comm)
print("op player")
else:
print("not a command")
deletemail(mail,i)
print("deleted item")
我希望看到该程序继续运行并回复电子邮件,但它却冻结了。服务器停止后程序继续正常关闭。我知道这不是错误,但是有没有办法让 python 程序在服务器处于 运行 时继续运行?
最好使用子流程来处理这个问题。您可以使用 popen 来继续 运行 您的脚本并发送命令。 Here 是关于使用 popen 的一个很好的答案,它展示了如何发送命令。