Flask框架有自带的http server,但是缺点非常明显,并发能力,及时响应非常差,只适合开发时自测使用。

在我接触过的项目中,生产环境使用nginx+uWSGI+flask应用程序进行部署服务端。

nginx主要作为防火墙,负载均衡,集群,反向代理,动静分离,缓存,压缩静态文件 等等。

uWSGI主要作为Web服务器,实现了WSGI协议、uwsgi、http等协议。简单来讲,就是flask应用程序和nginx之间的一个桥梁。以下为引用其他博客的部分

WSGI有两方:“服务器”一方,以及“应用程序”或“应用框架”一方。服务方调用应用方,提供环境信息,以及一个回调函数(提供给应用程序用来将消息头传递给服务器方),并接收Web内容作为返回值。

所谓的 WSGI中间件同时实现了API的两方,因此可以在WSGI服务和WSGI应用之间起调解作用:从WSGI服务器的角度来说,中间件扮演应用程序,而从应用程序的角度来说,中间件扮演服务器。“中间件”组件可以执行以下功能:

1.重写环境变量后,根据目标URL,将请求消息路由到不同的应用对象。

2.允许在一个进程中同时运行多个应用程序或应用框架。

3.负载均衡和远程处理,通过在网络上转发请求和响应消息。

4.进行内容后处理,例如应用XSLT样式表。

一次请求过程示意图。

一次请求流程图如下:从刚开始 的 域名解析,到nginx处理(其中各种功能的顺序可能存在问题,此图仅仅帮助个人理解工作流程),到uWSGI,到flask应用再原路返回。

参考网址:

http://blog.csdn.net/guoqingpei/article/details/52749101

https://www.cnblogs.com/geaozhang/p/7010353.html

https://www.cnblogs.com/hanyifeng/p/5626327.html

http://blog.csdn.net/midion9/article/details/51354774

一次请求中,经过 nginx+uWSGI+flask应用程序搭建服务的执行过程的更多相关文章

  1. Ubuntu下nginx+uwsgi+flask的执行环境搭建

    选择web framwork是个非常艰难的事情, 主要分为轻量级和重量级框架. 因为没有搭建站点这样的须要, 所以回避SSH, Django这样的框架, 而选择一个轻量级框架. 自己也比較青睐pyth ...

  2. nginx+uwsgi+flask 服务器配置

    注:每个机器,软件版本可能不一样,虽然网上有很多类似的帖子,但是我在搭建的时候遇到了不少的坑,此文仅供参考. 请求流程: 1.安装uwsgi uwsgi是一个应用服务器,非静态文件的网络请求就必须通过 ...

  3. nginx+uwsgi+flask+supervisor 项目部署

    环境 - Linux: Ubuntu 16.04 - uWSGI 2.0.18 - Flask 1.0.2 - supervisor 3.2.0 - nginx/1.8.1 首先区分几个概念 WSGI ...

  4. Docker构建nginx+uwsgi+flask镜像(二)

    Dockerfile搭建环境并打包应用 在上一章Docker构建nginx+uwsgi+flask镜像(一)的学习中,我们学会用命令行一句一句在alpine环境中搭建nginx+uwsgi+flask ...

  5. Docker构建nginx+uwsgi+flask镜像(一)

    前言 笔者之前是从事Java方面的工作,自从18年5月左右来到新的公司,接触到Python,被其简单优雅的语法风格深深吸引,同时,新公司也帮助笔者打开Docker世界的大门,让笔者体会到“一次打包,到 ...

  6. Ubuntu下使用Nginx+uWSGI+Flask(初体验)

    Ubuntu 18.04,Nginx 1.14.0, uWSGI 2.0.17.1,Flask, 前言 Windows不支持uWSGI!为了上线自己的项目,只能选择Linux. 自己前面开发了一个Fl ...

  7. nginx+uwsgi+django开发环境搭建

    Nginx+uWSGI+Djangoi开发环境搭建 Django简介,环境搭建 uWSGI简介,安装与配置 Nginx安装与配置 Nginx+uWSGI+Django原理解析 1.django简介,环 ...

  8. Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

    Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...

  9. nginx+uwsgi+flask搭建python-web应用程序

    Flask本身就可以直接启动HTTP服务器,但是受限于管理.部署.性能等问题,在生产环境中,我们一般不会使用Flask自身所带的HTTP服务器. 从现在已有的实践来看,对于Flask,比较好的部署方式 ...

随机推荐

  1. poj 1113 凸包

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  2. SQL Sever 2012版本数据库的完全安装流程

    首先安装SQL Sever 2012数据库,我们要下载好安装包.将安装包存储在磁盘中. 安装前将杀毒软件和相关安全的软件等退出,以免造成安装中的错误. 安装环境:Win7 64位操作系统 注:SQL ...

  3. Javascript 4.3 事件处理函数

    鼠标指针悬停在某个元素上时触发一个动作:onmouseover事件处理函数 鼠标指针离开某个元素时触发一个动作:onmouseout事件处理函数 点击某个链接时触发一个动作:onclick事件处理函数 ...

  4. [C]奇数求和

    /* 用递归算法实现,输入整数n(n>0), 求1+3+5+7….+(2*n-1) 的和 */ #include<stdio.h> int add(int n); int main( ...

  5. python bif

    filter(过滤器):   语法:         filter(function, iterable)         funciton 为判断函数         iterable 为可迭代对象 ...

  6. Linux上使用源代码安装软件

  7. 交换排序-C#实现

    交换排序包括:冒泡排序和快速排序 具体代码如下: 冒泡排序: /// <summary> /// 冒泡排序 /// 稳定性:稳定 /// 时间复杂度:O(n2) /// </summ ...

  8. impdp如何杀掉job

    今天刚执行一个impdp操作发现,硬盘空间可能不够了,赶紧按了Ctrl+C,结果发现磁盘空间仍然在减少.问了一下部门oracle专家,Ctrl+C是无法停止impdp的job的.需要将job进行att ...

  9. response响应

    郭晨 软件151 1531610114 response1.response常用APIsetStatus:设置响应行当中的状态码setHeader:设置响应头信息getOutputStream:获得字 ...

  10. 西门子S7-300 PLC视频教程(百度网盘)

    西门子S7-300 PLC视频教程(百度网盘) 百度网盘链接地址: 链接:https://pan.baidu.com/s/1MqC0DJbv-ndCzk9XGU2AYQ 提取码:u5eq 祝大家天天开 ...