wsgi

用gunicorn+gevent启动Flask项目

我是研究僧i 提交于 2020-05-02 10:00:56
转自:https://blog.csdn.net/dutsoft/article/details/51452598 Flask,webpy,Django都带着 WSGI server,当然性能都不好,自带的web server 更多的是测试用途。线上发布时,则使用高性能的 wsgi server或者是联合nginx做uwsgi 。 greenlet是一个轻量级的协程库。gevent是基于greenlet的网络库。 guincorn是支持wsgi协议的http server,gevent只是它支持的模式之一 ,是为了解决django、flask这些web框架自带wsgi server性能低下的问题。它的特点是与各个web框架结合紧密,部署特别方便。 gunicorn安装和使用 安装 pip install gunicorn 启动 gunicorn code:application 其中code就是指python程序代码code.py,application就是那个wsgi func的名字。这样运行的话, gunicorn 默认作为一个监听 127.0.0.1:8000 的web server,可以在本机通过: http://127.0.0.1:8000 访问。 设置监听端口 如果要通过网络访问,则需要绑定不同的地址(也可以同时设置监听端口)。 gunicorn -b 127.0.0

Django基础(一)-web框架

☆樱花仙子☆ 提交于 2020-05-02 04:32:27
一、简单web框架 WSGI:Web Server Gateway Interface 一个简单的web框架: step1: #!/usr/bin/env python # -*- coding: utf-8 -*- from wsgiref.simple_server import make_server def application(environ,start_response): start_response("200 OK",[("Content-Type","text/html")]) return [b'<h1>Hello,web!!</h1>'] httpd=make_server("",8080,application) print("Serving HTTP on port 8080....") #开始监听http请求 httpd.serve_forever() 注意: 整个application()函数本身没有涉及到任何解析HTTP的部分,也就是说,底层代码不需要我们自己编写,我们只负责在更高层次上考虑如何响应请求就可以了。 application()函数必须由WSGI服务器来调用。有很多符合WSGI规范的服务器,我们可以挑选一个来用。 Python内置了一个WSGI服务器,这个模块叫wsgiref application(

Python学习—框架篇之初识Django

◇◆丶佛笑我妖孽 提交于 2020-05-02 03:08:48
什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演。 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。   最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回。 如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。 正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务。 这个接口就是WSGI:Web Server Gateway Interface。 -----------------------------Do a web framework ourselves --------------------------- step1 from wsgiref.simple_server import make

Django HTTP请求的处理流程

大城市里の小女人 提交于 2020-05-02 03:08:28
  Django 和其他 Web 框架的 HTTP 处理的流程大致相同,Django 处理一个 Request 的过程是首先通过中间件,然后再通过默认的 URL 方式进行的。我们可以在 Middleware 这个地方把所有 Request 拦截住,用我们自己的方式完成处理以后直接返回 Response。 1. 加载配置   Django 的配置都在 “Project/settings.py” 中定义,可以是 Django 的配置,也可以是自定义的配置,并且都通过 django.conf.settings 访问,非常方便。 2. 启动   最核心动作的是通过 django.core.management.commands.runfcgi 的 Command 来启动,它运行 django.core.servers.fastcgi 中的 runfastcgi , runfastcgi 使用了 flup 的 WSGIServer 来启动 fastcgi 。而 WSGIServer 中携带了 django.core.handlers.wsgi 的 WSGIHandler 类的一个实例,通过 WSGIHandler 来处理由Web服务器(比如Apache,Lighttpd等)传过来的请求,此时才是真正进入 Django 的世界。 3. 处理 Request   当有 HTTP 请求来时,

1.1Django简介和虚拟环境配置

限于喜欢 提交于 2020-05-01 23:31:26
MVC 大部分开发语言中都有MVC框架 MVC框架的核心思想是: 解耦 降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的 重用 m表示model,主要用于对 数据库层的封装 v表示view,用于向用户 展示结果 c表示controller,是核心,用于处理请求、获取数据、返回结果 MVT Django是一款python的web开发框架 与MVC有所不同,属于MVT框架 m表示model,负责与数据库交互 v表示view,是核心,负责接收请求、获取数据、返回结果 t表示template,负责呈现内容到浏览器 注册页面展示 Django框架示意图  MVT T:template 安装虚拟环境的命令: 1.sudo pip install virtualenv #安装虚拟环境 2.sudo pip install virtualenvwrapper #安装虚拟环境扩展包 3.编辑家目录下面的.bashrc文件,添加下面两行    export WORKON_HOME=$HOME/.virtualenvs (注意=前后不要加空格)    source /usr/local/bin/virtualenvwrapper.sh 4.使用 source .bashrc 使其生效 创建虚拟环境命令:   mkvirtualenv -p python3 虚拟环境名

Serving Flask app with waitress on windows

老子叫甜甜 提交于 2020-04-29 08:12:42
问题 I am able to run a webserver using the following code from flask import Flask from waitress import serve app = Flask(__name__, static_url_path='/static') ... serve(app, port=8080) The problem is that I can access it only from the machine where it is running, if I try to access it using the ipv4 ip, it doesn't work. Am I missing a step? 回答1: Simple example,try it! I hope it will help you. app1.py from flask import Flask app = Flask(__name__) # app.run(host='0.0.0.0', port=8080,debug=True)

Part17

本秂侑毒 提交于 2020-04-28 07:01:43
本节内容 Web框架本质 Django 基础 Django 进阶 一、Web框架本质 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。 WEB框架本质是一个socket #########WEB框架(代码文件结构) MVC Model View Controller 数据库 模板文件 业务处理 MTV Model Template View 数据库 模板文件 业务处理 ############## WEB:MVC、MTV 1、本质 import socket #WEB框架本质-->socket def handle_request(client): buf = client.recv(1024) client.send(b"HTTP/1.1 200 OK\r\n\r\n") client.send(b"Hello, Seven") def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('localhost', 8000)) sock.listen(5) while True: connection, address = sock.accept() handle_request(connection) connection

Django学习 之 Django安装与一个简单的实例认识

两盒软妹~` 提交于 2020-04-27 02:38:30
一. Django 简介 1 、 MVC 与 MTV 模型 (1) MVC 模型 Web 服务器开发领域里著名的 MVC 模式,所谓 MVC 就是把 Web 应用分为模型 (M) ,控制器 (C) 和视图 (V) 三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射 (ORM) ,视图负责与用户的交互 ( 页面 ) ,控制器接受用户的输入调用模型和视图完成用户的请求,其示意图如下所示: (2)MTV 模型 Django 的 MTV 模式本质上和 MVC 是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同, Django 的 MTV 分别是值: M 代表模型( Model ): 负责业务对象和数据库的关系映射 (ORM) 。 T 代表模板 (Template) :负责如何把页面展示给用户 (html) 。 V 代表视图( View ): 负责业务逻辑,并在适当时候调用 Model 和 Template 。 除了以上三层之外,还需要一个 URL 分发器,它的作用是将一个个 URL 的页面请求分发给不同的 View 处理, View 再调用相应的 Model 和 Template , MTV 的响应模式如下所示: 一般是用户通过浏览器向我们的服务器发起一个请求 (request) ,这个请求回去访问视图函数,(如果不涉及到数据调用

ubantu18.04 配置nginx与uwsgi(前后端分离)

感情迁移 提交于 2020-04-26 09:08:34
ubantu18.04 配置nginx与uwsgi 一、首先先安装nginx静态服务 先更新 sudo apt-get update 1.安装gcc g++的依赖库 sudo apt-get install build-essential && sudo apt-get install libtool 2.安装pcre依赖库 sudo apt-get install libpcre3 libpcre3-dev 3.安装zlib依赖库 sudo apt-get install zlib1g-dev 4.安装ssl依赖库 sudo apt-get install openssl 安装nginx 下载 sudo wget http://nginx.org/download/nginx-1.11.3.tar.gz 解压 sudo tar -zxvf nginx-1.11.3.tar.gz 然后 在 /usr/local/ 目录下创建nginx目录,然后把解压好的放到 /usr/local/nginx 下 分别执行: sudo mkdir nginx sudo mv nginx-1.11.3 /usr/local/nginx 执行编译nginx 先 cd /usr/local/nginx/nginx-1.11.3到这个目录下 配置: sudo ./configure 编译 sudo make

ubantu18.04 配置nginx与uwsgi

蓝咒 提交于 2020-04-26 09:07:30
一、首先先安装nginx静态服务 先更新 sudo apt-get update 1.安装gcc g++的依赖库 sudo apt-get install build-essential && sudo apt-get install libtool 2.安装pcre依赖库 sudo apt-get install libpcre3 libpcre3-dev 3.安装zlib依赖库 sudo apt-get install zlib1g-dev 4.安装ssl依赖库 sudo apt-get install openssl 安装nginx 下载 sudo wget http://nginx.org/download/nginx-1.11.3.tar.gz 解压 sudo tar -zxvf nginx-1.11.3.tar.gz 然后 在 /usr/local/ 目录下创建nginx目录,然后把解压好的放到 /usr/local/nginx 下 分别执行: sudo mkdir nginx sudo mv nginx -1.11.3 /usr/local/nginx 执行编译nginx 先 cd /usr/local/nginx/nginx-1.11.3到这个目录下 配置: sudo ./configure 编译 sudo make 在编译步骤出现如下错误: 解决方法: 找到目录下