我有一个客户端发出的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正在提供正确的输出并退出,据我所知。因此,一旦获得打印的响应,我是否会让我的客户端停止等待响应?