大佬们问下 Python 多进程的问题
功能概述
发送一个请求 /task/create 开启了一个长耗时计算密集型任务。在这个任务运行的过程中,可以发送另一个请求 /task/close 来关闭这个任务。
需求
- 需要可以主动关闭这个任务
- 优化长耗时任务
目前的状况
用 flask 建立了一个项目,通过 Gunicorn + Gevent 在 centos7 上部署了服务(尚未通过 Nginx 走代理)。
问题
为了解决以上两个需求,我想通过多进程来实现,但是没有具体的实现方式。
- 需要有一个能实现的最简示例。
- 如果通过 Nginx 代理,Gunicorn 的 -w 参数还需要设置 cpu *2 +1 的数量吗
其他补充
用 Gunicorn 启动服务后,在 flask 的 路由函数里面开启了多进程(通过 ProcessPoolExecutor),控制台会提示有些进程被忽略掉,而且有些进程没有运行,好像有些进程也被阻塞了。
然后看到 multiprocessing.Pool 可以直接 terminate 终止进程池,但是有个限制
注意 start() 、join() 、is_alive() 、terminate() 和 exitcode 方法只能由创建进程对象的进程调用。