Как выполнить скрипт Linux и вернуть ответ HTTP пост, не ожидая в Python - PullRequest
1 голос
/ 11 марта 2019

У меня странная проблема, когда из моего кода Python на сервере server1 я отправляю запрос на сервер server2, где мне нужно выполнить команду linux, которая запускает приложение (и запускает процесс в linux), а затем возвращает вывод команды в Вызов функции на сервере 1. Фрагмент кода, как показано ниже. Проблема здесь в том, что команда на сервере 2 выполняется нормально и также печатает результат, но она не выполняет команду «self.wfile.write (response_str)» и не возвращает никакого значения обратно к вызывающему коду на сервере server1. Таким образом, код в server1 зависает навсегда, хотя команда в server2 выполняется успешно. Я запутался здесь, потому что, это не то, что команда не выходит, печать вывода команды работает нормально, но обратная запись в пост-вызов не происходит. Я попытался выполнить тот же код с помощью команд, таких как «ps» или «ls». Работает нормально. Только когда я запускаю этот новый процесс для запуска приложения, он не работает.

Любая идея, почему это и как решить ?? Кстати, у меня очень старая версия Python здесь 2.5.2. Любая помощь будет высоко ценится.

Телефонный код на сервере 1

def startApp(self):
    data = urllib.parse.urlencode(request_data).encode("utf-8")
    req = urllib.request.Request("http://server_url:8044",data)
    response = urllib.request.urlopen(req).read().decode('utf8')

Вызываемый код на сервере 2

def do_POST(self):
    ............
    response_str = commands.getoutput(start_cmd)
    print(response_str)
    self.wfile.write(response_str)
...