首页 > 解决方案 > 如何在不等待python的情况下执行linux脚本并返回http post响应

问题描述

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

标签: pythonhttppython-2.5

解决方案


推荐阅读