环境
python38:flask、gunicorn(无法windows上使用)、jieba词库、centos
开始
1、仿造9s的接口并提供使用 flask、jieba
2、处理高并发gunicorn
代码
gun_init.py
import os
import gevent.monkey
gevent.monkey.patch_all()
import multiprocessing
# 服务地址(adderes:port)
bind = '127.0.0.1:5000'
# 启动进程数量
workers = multiprocessing.cpu_count() * 2 +1
worker_class = 'gevent'
threads = 20
preload_app = True
reload = True
x_forwarded_for_header = 'X_FORWARDED-FOR'
127.0.0.1:5000为默认flask启动的地址
运行:
gunicorn -c gun_init.py webApi:app
遇到的问题
1、直接pip3 install gunicorn会报错,建议安装指定版本:
pip3 install gevent==1.4.0
2、安装相关模块:
$ pip install greenlet # 使用异步必须安装
$ pip install eventlet # 使用eventlet workers
$ pip install gevent # 使用gevent workers
3、Ubuntu上,使用gunicorn == 1.4.0 报错
<frozen importlib._bootstrap>:228: RuntimeWarning: greenlet.greenlet size changed, may indicate
Segmentation fault (core dumped)
为版本不一样,使用20.9.0版本OK:
pip3 install --upgrade gevent==20.9.0 -i https://mirrors.aliyun.com/pypi/simple/
截图
在不使用gunicorn的情况下,程序会卡住,非常慢;使用gunicorn,CPU占有率较高,但影响不大
物理机器配置: