python - 如何在不等待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)
解决方案
推荐阅读
- php - SMTP 服务器不接受密码。升级到 cakephp3.6
- java - Intellij IDEA线程视图中@后面的数字是什么意思?
- error-handling - 合并两种错误类型最惯用的方法是什么?
- azure - 带有 LUIS 的 Microsoft Bot 未检测到新创建的意图
- javascript - react-materialize SideNav & 触发器放置
- python - fiona - 将软件包安装到 photoscan
- javascript - 绝对 url 不能放在点运算符之前反应
- docker - 链接在两个不同 docker-compose 文件中配置的容器
- oracle - 将 select 中的参数插入过程
- javascript - 如何在自动完成 jquery 中过滤 JSON 数组并在 JavaScript 中显示动态值?