首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flask 高并发部署方案详细教程!

第一时间获取 Python 技术干货!

阅读文本大概需要 10 分钟。

前言

虽然标题写的是 Flask,但是下面这个教程不仅仅只适用于 Flask, 还适用于其他Python web 框架,记得帮忙点赞!

众所周知 Flask 是一个同步的框架,处理请求的时候是以单进程的方式,当同时访问的人数过多时,Flask 服务就会出现阻塞的情况。

就像我们买火车票一样,当买火车票的人多的时候,排队的人就会很多,队伍就会很长,相应的等待的时间会变得很长!

因此 Flask, Django,webpy 等框架自带的 web server 性能都很差,只能用来做测试用途,线上发布则需要选择更高性能的 wsgi server 。这里推荐的部署方式:nginx + gunicorn + flask + supervisor

其中每个服务代表的含义如下:

Nginx:高性能 Web 服务器+负载均衡;

gunicorn:高性能 WSGI 服务器;

gevent:把 Python 同步代码变成异步协程的库;

Supervisor:监控服务进程的工具;

这里有张图,能让你有个更直观的感受

Gunicorn

Gunicorn 可以指定多个工作进程,有多种工作模式可以供你选择。默认是同步的 sync 工作模式,除此之外还有 gevent, tronado, gthread, gaiohttp 等。

这里推荐 gevent, gevent 是一个基于 Greenlet 库,利用 python 协程来实现,这样你的 web 服务才能实现并发的功能!

Nginx

Nginx 实际上只能处理静态资源请求,那么对于动态请求怎么做呢。这就需要用到 Nginx 的 模块对这些请求进行转发,即反向代理。Nginx 在这里主要是用来做负载均衡,同时它能缓存一些动态内容

安装 nginx

安装命令如下:

nginx 安装完后,我们可以通过以下命令控制 nginx 的开启和关闭

配置 nginx

Nginx 配置文件位于 /usr/local/nginx/conf/nginx.conf

修改完之后保存,重启 nginx.

Supervisor

安装 supervisor

命令如下:

初始化配置文件:

修改配置文件,在配置文件最底部添加相应配置

编辑完之后保存,启动 supervisor。这里的启动命令和在命令行用 gunicorn 启动的命令是一致的,其中 -w 是指服务的进程数,详细命令查看我之前写的那篇文章哈。

基本命令

通过配置文件启动 supervisor

查看 supervisor 的状态

重新载入配置文件,每次修改之后记得重新载入

启动指定/所有 supervisor 管理的程序进程

关闭指定/所有 supervisor管理的程序进程

这时候通过 http://127.0.0.1:8080 就能访问你的应用了! 想知道效果如何,可以自己测试一下,比如在代码中增加 sleep,或者自己动手写个脚本测试!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191202A0JG7900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券