我正在尝试使用nginx,uwsgi和flask将我最近写的烧录应用程序部署到服务器。
根据特定请求,我正在进行一些时间密集的计算,这个计算器开始一个新的过程(使用来自Python的Process
模块的multiprocessing
)。 Flask能够通过multiprocessing.Pipe()
与该子进程通信,以获取有关计算状态的信息。启动子进程烧瓶后,向客户端发送包含唯一标识符的响应,以便稍后请求计算状态。
因此,我有两个端点,如/api/calc/new
和/api/calc/<id>/status
,可以开始新计算或获取其状态。
获取状态是使用轮询服务实现的,该服务每10秒请求一次状态,并在服务器resp处理api/calc/new
请求后触发。 AngularJS&#39;承诺所需的API端点已得到解决。
使用由app.run(host='0.0.0.0', debug=True)
调用的flask内置开发服务器,上述方法效果很好。
使用uwsgi部署到nginx时出错了。在通过所需请求开始新计算之后,似乎产生了一个新进程,因为top
中显示的uwsgi进程之一的CPU负载增加到大约90%。但是,承诺似乎没有得到解决,因为服务器没有回答请求。烧瓶app。
那么,为什么这与内置的开发服务器一起工作,但是使用nginx和uwsgi不起作用?是否有任何方法可以使生产环境中的工作符合要求?