Angular HTTP POST请求不会停止等待python子进程

时间:2016-03-18 06:16:18

标签: python angularjs python-3.x

我有一个客户端发出的AngularJS http post请求,该请求发布到服务器上的handleRequest.py。 根据发布的数据,它将作为分离的子流程运行各种数据库查询和过程。

生成子流程的代码如下:

CREATE_NEW_PROCESS_GROUP = 0x00000200
DETACHED_PROCESS = 0x00000008

p = subprocess.Popen( [
      sys.executable,
      "executeOracleProcedure.py"
      ] + args,
      stdout=logfile, stderr=logfile, stdin=logfile,
      creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP)

handleRequest.py然后通过打印对客户端的响应来响应,告诉他们他们执行了该过程。

print("Content-type: application/json")
print("Status: " + status + " " + status_text + "\n")
print(json)
然后

handleRequest.py应该退出。让子进程保持运行,因为程序运行需要很长时间。

添加一些日志记录后,我确认子进程似乎正在运行。然而,尽管handleRequest.py似乎已经结束,但客户端似乎仍在等待(并且最终超时因为程序需要很长时间)才能完成子流程。

我尝试用sys.stdout.flush()和sys.exit()进行轰炸,试图让100%确定handleRequest.py正在提供正确的输出并退出,据我所知。因此,一旦获得打印的响应,我是否会让我的客户端停止等待响应?

1 个答案:

答案 0 :(得分:0)

好的,问题是我尝试记录问题引起的!

9000similar问题的回答是让我失望的原因。这个答案是让我失望的原因

简单地把我的管道“stdout = logfile,stderr = logfile,stdin = logfile”告诉python我希望继续与子进程通信。

删除管道解决了问题。