【黑马程序员】高并发是什么、高并发编程、高并发解决方案
黑马程序员免费视频库:yun.itheima.com?2020sxkyk 使用Flask的做服务器框架,可以以python code.py的方式运行,但这种方式不能用于生产环境,不稳定,比如说: 有一定概率遇到连接超时无返回的情况
1,通过设置app.run()的参数,来达到多进程的效果。看一下app.run的具体参数:
黑马程序员免费视频库:http://yun.itheima.com?2020sxkyk
注意: threaded与processes不能同时打开, 如果同时设置的话,将会出现以下的错误:
2.使用gevent做协程,从而解决高并发的问题:
# 携程的第三方包-这里选择gevent, 当然你也可以选择eventlet
pip install gevent
# 具体的代码如下:
from flask import Flask
from gevent.pywsgi import WSGIServer
from gevent import monkey
# 将python标准的io方法,都替换成gevent中同名的方法,遇到io阻塞gevent自动进行协程切换
黑马程序员免费视频库:http://yun.itheima.com?2020sxkyk
monkey.patch_all()
# 1.创建项目应用对象app
app = Flask(__name__)
# 初始化服务器
WSGIServer((\
# 来启动服务---这样就是以协程的方式运行项目,提高并发能力
python code.py
3. 通过Gunicorn(with gevent)的形式对app进行包装,从而来启动服务【推荐】
安装遵循了WSGI协议的gunicorn服务器--俗称:绿色独角兽
pip install gunicorn
黑马程序员免费视频库:http://yun.itheima.com?2020sxkyk
查看命令行选项: 安装gunicorn成功后,通过命令行的方式可以查看gunicorn的使用信息。
$gunicorn -h
指定进程和端口号: -w: 表示进程(worker) --bind:表示绑定ip地址和端口号(bind) —threads 多线程 -k 异步方案
# 使用gevent做异步(默认worker是同步的)
gunicorn -w 8 --bind 0.0.0.0:8000 -k 'gevent' 运行文件名称:Flask程序实例名
运行方案2: 将运行的信息加载到配置文件中 使用gunicorn + gevent 开启高并发
import multiprocessing
黑马程序员免费视频库:http://yun.itheima.com?2020sxkyk
\的配置文件\
# 预加载资源
preload_app = True
# 绑定
bind = \
# 进程数
workers = multiprocessing.cpu_count() * 2 + 1
# 线程数
threads = multiprocessing.cpu_count() * 2
# 等待队列最大长度,超过这个长度的链接将被拒绝连接
backlog = 2048
# 工作模式
# worker_class = \
worker_class = \
黑马程序员免费视频库:http://yun.itheima.com?2020sxkyk