如何在不等待python的情况下执行linux脚本并返回http post响应

时间:2019-03-11 20:44:18

标签: python http python-2.5

我有一个奇怪的问题,从服务器1中的Python代码向服务器2发送请求,在此我需要执行一个Linux命令来启动一个应用程序(并在Linux中启动一个进程),然后将命令输出返回给服务器1中的调用函数。代码段如下。这里的问题是server2中的命令可以正常执行并打印结果,但是它不执行'self.wfile.write(response_str)'命令,并且不会将任何值返回给server1中的调用代码。因此,尽管server2中的命令执行成功,但是server1中的代码将永远挂起。 我在这里感到困惑是因为,不是不是命令没有发出,命令输出的输出就可以正常工作,但是写回post调用并不会停顿。我尝试使用“ 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)

0 个答案:

没有答案