一次请求中,经过 nginx+uWSGI+flask应用程序搭建服务的执行过程
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应用程序搭建服务的执行过程的更多相关文章
- Ubuntu下nginx+uwsgi+flask的执行环境搭建
选择web framwork是个非常艰难的事情, 主要分为轻量级和重量级框架. 因为没有搭建站点这样的须要, 所以回避SSH, Django这样的框架, 而选择一个轻量级框架. 自己也比較青睐pyth ...
- nginx+uwsgi+flask 服务器配置
注:每个机器,软件版本可能不一样,虽然网上有很多类似的帖子,但是我在搭建的时候遇到了不少的坑,此文仅供参考. 请求流程: 1.安装uwsgi uwsgi是一个应用服务器,非静态文件的网络请求就必须通过 ...
- 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 ...
- Docker构建nginx+uwsgi+flask镜像(二)
Dockerfile搭建环境并打包应用 在上一章Docker构建nginx+uwsgi+flask镜像(一)的学习中,我们学会用命令行一句一句在alpine环境中搭建nginx+uwsgi+flask ...
- Docker构建nginx+uwsgi+flask镜像(一)
前言 笔者之前是从事Java方面的工作,自从18年5月左右来到新的公司,接触到Python,被其简单优雅的语法风格深深吸引,同时,新公司也帮助笔者打开Docker世界的大门,让笔者体会到“一次打包,到 ...
- Ubuntu下使用Nginx+uWSGI+Flask(初体验)
Ubuntu 18.04,Nginx 1.14.0, uWSGI 2.0.17.1,Flask, 前言 Windows不支持uWSGI!为了上线自己的项目,只能选择Linux. 自己前面开发了一个Fl ...
- nginx+uwsgi+django开发环境搭建
Nginx+uWSGI+Djangoi开发环境搭建 Django简介,环境搭建 uWSGI简介,安装与配置 Nginx安装与配置 Nginx+uWSGI+Django原理解析 1.django简介,环 ...
- Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统
Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...
- nginx+uwsgi+flask搭建python-web应用程序
Flask本身就可以直接启动HTTP服务器,但是受限于管理.部署.性能等问题,在生产环境中,我们一般不会使用Flask自身所带的HTTP服务器. 从现在已有的实践来看,对于Flask,比较好的部署方式 ...
随机推荐
- #20175120彭宇辰-实验一《Java开发环境的熟悉》实验报告
Java开发环境的熟悉-1 实验要求:1 .建立“自己学号exp1”的目录2 .在“自己学号exp1”目录下建立src,bin等目录3 .javac,java的执行在“自己学号exp1”目录4 .提交 ...
- Codeforces 1105C: Ayoub and Lost Array(递推)
time limit per test: 1 second memory limit per test: 256 megabytes input: standard input output: sta ...
- 如何将maven配置在eclipse上
如何将maven配置在eclipse上 安装maven:(需要确保你已经安装了jdk) 去apache官网下载maven:http://maven.apache.org/download.cgi 下载 ...
- CNN试验记录
CIFAR-10 图像处理:(预处理还是很重要的) 数据随机裁剪,填充0 依概率p水平翻转 1.VGG16 SGD lr=0.01 momentum 0.9 weight_decay=0.0001 e ...
- [cf1025D][区间dp]
http://codeforces.com/contest/1025/problem/D D. Recovering BST time limit per test 1 second memory l ...
- SQL group_concat find_in_set 的使用
SELECT p.id as pid,p.code as code,p.topic_name topic_name,p.vm_id as vm_id,GROUP_CONCAT(iso.iso_name ...
- Python 安装beautifulsoup4遇到No module named setuptools问题解决方法
背景说明: 电脑win7-32 在Python 3.3.5下安装beautifulsoup4 4.6.0(下载链接https://pypi.org/project/beautifulsoup4/#fi ...
- C#知识点汇总
核心技术课程 编程基础强化练习.面向过程编程(变量.if.for.while.函数.类型转换.枚举 .数组.重载.值类型.引用类型.ref.out.字符串).面向对象编程(类.继承 .接口.异常.索引 ...
- python selenium-webdriver 执行js (八)
使用python selenium 做自动化测试的时候其实我基本没有使用过执行js,只是在后来使用selenium来爬虫的时候使用到了,所以我在这里也就拿出来简单的介绍一下如何执行js. execut ...
- C# 将DataTable转换成list (--分页--) 【Skip--Take】
将DataTable转换成list 及数据分页: /// <summary> /// 酒店评论列表-分页 /// </summary> /// <param name=& ...