Python程序在服务器运行时暂停

2024-04-25 23:31:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个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程序在服务器运行时继续?你知道吗


Tags: 命令程序服务器dataserver电子邮件mbcall
1条回答
网友
1楼 · 发布于 2024-04-25 23:31:54

最好使用子流程来处理这个问题。您可以使用popen,它将允许您继续运行脚本并发送命令。Here是关于如何使用popen发送命令的一个很好的答案。你知道吗

相关问题 更多 >