Программа Python приостанавливает работу сервера - PullRequest
2 голосов
/ 22 сентября 2019

Я делаю программу на 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 продолжить работу, пока сервер работает?

1 Ответ

1 голос
/ 22 сентября 2019

Лучше использовать подпроцесс для обработки этого.Вы можете использовать popen, который позволит вам продолжать запускать ваш скрипт и отправлять команды. Здесь - хороший ответ об использовании popen, который показывает, как отправлять команды.

...