Python的web框架对比及生产部署方案

liftword22小时前技术文章5

Python Web框架对比

Django

特点:大而全,自带的功能特别特别多,有时候过于笨重

Flask

特点:小而精,自带的功能特别特别少,第三方模块特别特别多,比较依赖于第三方开发者

flask自带一个服务器,主要用在开发环境,处理能力比较有限。不建议将flask直接部署在生产环境,因为flask直接用于生产环境无论是处理高并发还是鲁棒性都有所欠缺,一般会配合WGSI容器来进行生产环境的部署。Flask应用对象实质上是一个WSGI应用

异步框架 Sanic

在Web开发的过程中,我们最大的敌人不是用户,而是阻塞。异步可以有效地解决网络 I/O 阻塞,文件 I/O 阻塞。

Python在3.4 引入了 asyncio 库,3.6新增了关键字 asyncawait,此后,异步框架迅速发展了起来,性能上能和Node.js比肩,除非是CPU密集型任务,否则没有理由不适用异步框架。

Sanic 可用于生产环境,拥有完善的 中文用户指南 和 API 文档,官方承认的文档,由翻译者进行翻译贡献,由 Sanic 官方团队进行发布。

Python Web生产部署

1. Web服务器: Nginx、Apache用于处理和响应HTTP请求

2. WSGI容器: uWsgi、Gunicorn

Web框架(Flask)和Web服务器(Nginx)之间的通信,需要一套双方都遵守的接口协议。而WSGI协议就是用来统一这两者的接口的(WSGI是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口)

Gunicorn和uWSGI是常用的WSGI容器,Gunicorn直接用命令启动,不需要编写配置文件,相对uWSGI要容易很多。

Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server。和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点。gunicorn是支持wsgi协议的http服务器,gevent只是它支持的模式之一,是为了解决django、flask这些web框架自带wsgi server性能低下的问题。自带的webserver更多的是测试用途,线上发布时,最好使用高性能的wsgi server或者是联合nginx做uwsgi。

Gunicorn 部署 flask 服务(小项目推荐使用)

安装

 pip install flask
 pip install gunicorn
 pip install gevent -i https://pypi.douban.com/simple/

编写flask

 from flask import Flask
 app = Flask(__name__)
 
 @app.route('/')
 def hello_world():
   return 'Hello, World!' 

使用 Gunicorn 部署 falsk

 -w 4 指预定义的工作进程数为4 -b 0.0.0.0:8888 指绑定地址和端口  
 -k gevent
   多个工作模式:
         同步Worker:sync 默认模式,也就是一次只处理一个请求
         异步Worker:通过Eventlet、Gevent实现的异步模式
         异步IO Worker:目前支持gthread和gaiohttp两种类型
      工作进程类型包括: sync(default)、eventlet、gevent、tornado、gthread、gaiohttp
      
 hello是flask的启动python文件,app则是flask应用程序实例
 ///////////////////////
 命令行启动:
 gunicorn -w 4 -b 127.0.0.1:5000 hello:app
 gunicorn -w 1 -b 0.0.0.0:5000 main:app
 --daemon:后台运行
 gunicorn -w 1 -b 0.0.0.0:5000 main:app --daemon
 
 gunicorn -w 1 -k gevent --worker-connections 10 -b 0.0.0.0:5000 main:app
 官方解释greenlet是轻量级的并行编程,gevent就是利用greenlet实现的基于协程(coroutine)的python的网络library,通过使用greenlet提供了一个在libev事件循环顶部的高级别并发API。即gevent是对greenlet的高级封装。

Nginx + Gunicorn + Flask部署(大项目推荐使用)

待更新

相关文章

人生苦短,我要在VSCode里面用Python

轻沉 发自 浅度寺 量子位 出品 | 公众号 QbitAI在程序员圈子里,Visual Studio Code(以下简称VSCode)可以说是目前最火的代码编辑器之一了。它是微软出品的一款可扩展的轻量...

Python启航:30天编程速成之旅(第26天)- pathlib

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。前期基础教程:「Python3.11.0」手把手教你安装最新版Python运行环境讲讲Python环境使用Pip命令快速下载各类库...

轻松教会你Python的文件操作 python文件操作的三个步骤

1、前言Python中有几个内置模块和方法来处理文件。这些方法被分割到例如os, os.path , shutil 和 pathlib 等等几个模块中。文章将列举Python中对文件最常用的操作和方法...

你不可不知的Python宝藏库:pathlib.Path

在日常的Python开发中,我们经常需要处理文件和路径。传统上,我们可能会使用os模块来完成这些任务,但实际上,有一个更为优雅和强大的工具——pathlib模块,特别是其中的Path类,正是我们今天要...

赶紧收藏!编程python基础知识,本文给你全部整理好了

想一起学习编程Python的同学,趁我粉丝少,可以留言、私信领编程资料~Python基础入门既然学习 Python,那么至少得了解下这门编程语言,知道 Python 代码执行过程吧。Python 的历...

Python Supervisor进程管理介绍(大厂也在用)

要了解Supervisor进程管理需要先了解什么是守护进程。守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一...