实现 Flask 应用的高并发
Gunicorn + Flask App
安装 Gunicorn 和 gevent:
pip install gunicorn
pip install gevent
对 I/O 密集型的任务,采用 workers + gevent 的方式:
gunicorn --chdir=/home/xx/project/ run_server:app -w 9 -b
0.0.0.0:8888 -k gevent
对 CPU 密集型的任务,采用 workers:
gunicorn run_server:app -w 9 -b 0.0.0.0:8888
对于 内存占用较大的任务,采用 threads:
gunicorn run_server:app -w 3 --threads 3 -b 0.0.0.0:8888
其中,run_server 是 flask_app 的启动脚本的名字,也就是包含 app.run() 的脚本名,run_server.py app 是 Flask App 的名字。-w 代表 worker 的数量,建议是 2CPU 核数 +1,如果同时使用 workers 和 threads,建议两者数量相乘等于 2CPU 核数 +1。
查看 CPU 核数:
cat /proc/cpuinfo | grep ‘core id’ | wc -l
或者在 Python 中:
>>> import multiprocessing
>>> multiprocessing