✨基于 Bottle 框架开发API 之 从零到简单封装到应用到上线部署(1)-序

2,552 阅读6分钟

前言

辗转反侧,夜不能寐!有些东西一旦在你大脑滋生的话,然后你一直没有付之行动,久而久之你就是发现自己其实好像挺失落。 于是乎我还是决定把我之前用到的一些知识整理成文,也纯粹是当做自己的学习笔记。

对于web开发来说,其实我就是一个小白,从安卓到前端(纯小白)到后端,经历过一些大大小小的项目之后,你就会有自己一套属于自己的知识树的体系形成,记得之前我的带我的主管大牛说过,输出是学习的最好方式,已教为学,也更能促进自己思考。于是乎我还是希望我自己能坚持整理一下以往的一些知识点。

最初学习web后端的时候,都是由大牛的主管来引领的,如果有需要,大家可以到此博客阅览学习他的文章。>🔥大牛的博文

大牛地址官方博文地址www.cnblogs.com/EmptyFS/查看。

逼逼叨叨

关于我自己: 纯粹的是打杂的一个,似乎啥活都干过,小公司里搬砖久了,似乎啥都懂一些,所以博文有些地方估计有纰漏,还请各位大侠,多多担待! 这一系列的文字算不上是文章,反倒像我个人的日常的开发笔记,难免也有些事我自己的个人想法,如有什么问题,也希望各位多多海涵。

关于Python web 开发

PYTHON WEB 目前在业界大概无非是流程的几个框架使用:flask、django、tornado等对于web框架其实我们大致的追求也无非是围绕着几点,对于框架的选择我们有些时候我也是根据团队和业务进行选择,对应高性能的有些时候你甚至可以选择NODE.JS或者go,在这些语言的领域也有几个优秀的矿机如:egg.js 和 go 语言的gin或 beego等,我们再选择框架上也大多数是根据以下几点综合自身的团队的及业务开选择:

  • 框架难易度
  • 框架的安全性
  • 框架易维护性
  • 框架难易度
  • 处理能力,速度快慢

本质上其实我们的所有框架上是没什么大的区别,再一个web 框架里,通常也无非是围绕着:

  • router 处理请求的URL
  • model 数据model模型
  • controller 数据业务逻辑处理

在选择上还要看看我们的业务形态是:(通常我们肯定是很少在我们的web框架中处理CPU 密集型的任务):

  • CPU 密集型的任务
  • IO 密集型任务

甚至根据PY3之后引入新的特性,比如async / await 协程等,我们有可以把web框架分为:同步框架和异步框架。根据异步和同步的说法,我们大致有可以分为一些WSGI和ASGI。

那什么是WSGI和ASGI?哪些框架是ASGI?哪些是WSGI呐?这里我也简单的总结下,后续我也会记录一些我再使用到异步框架的时候一些笔记。

什么是WSGI

对于什么是WSGI,首先我们需要了解一下什么是CGI。以下的文字摘录自百度百科

(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口

WSGI区分为两个部分:一为“服务器”或“网关”,另一为“应用程序”或“应用框架”。在处理一个WSGI请求时,服务器会为应用程序提供环境信息及一个回调函数(Callback Function)。当应用程序完成处理请求后,透过前述的回调函数,将结果回传给服务器。 所谓的WSGI中间件同时实现了API的两方,因此可以在WSGI服务器和WSGI应用之间起调解作用:从Web服务器的角度来说,中间件扮演应用程序,而从应用程序的角度来说,中间件扮演服务器。“中间件”组件可以执行以下功能: 重写环境变量后,根据目标URL,将请求消息路由到不同的应用对象。 允许在一个进程中同时运行多个应用程序或应用框架。 负载均衡和远程处理,通过在网络上转发请求和响应消息。 进行内容后处理,例如应用XSLT样式表。

Python Paste - WSGI底层工具集. 包括多线程, SSL和 基于Cookies, sessions等的验证(authentication)库. 可以用Paste方便地搭建自己的Web框架。 WSGI:Python Web Server Gateway Interface v1.0 它是 PEP3333中定义的(PEP3333的目标建立一个简单的普遍适用的服务器与Web框架之间的接口) WSGI是Python应用程序或框架和Web服务器之间的一种接口 WSGI被广泛接受, 已基本达成它了可移植性方面的目标 在Guido的 Blog 中反复提及, 个人认为WSGI是Python Web方面最Pythonic的 类似于Java中的"servlet" API。 [3]

什么是ASGI

ASGI是异步网关协议接口,介于网络协议服务和PYTHON应用之前标准接口,通常可以处理的协议类型主要有:http、http2、websocket等。

ASGI它可以帮助实现一个Python Web框架生态系统,在一些框架中实现与IO绑定的上下文中实现高吞吐量,性能上方面也近似可以Node和Go进行对比,当然相比之下肯定还是GO语言更快,比较这个动态和静态语言之前还是存在大区别。

ASGI它还提供对HTTP / 2和WebSockets的支持,WSGI无法处理。

支持WSGI协议规范的框架有哪些?

  • flask
  • Django
  • bottle
  • web.py
  • CherryPy
  • web2py
  • Tornado
  • Gunicorn
  • falcon

支持ASGI协议规范的框架有哪些?

  • Uvicorn
  • APIStar
  • Sanic
  • Fastapi
  • Quart(类似flask异步框架)

Python web 开发中的同步和异步

对于同步和异步的问题,素来一直有争议。那到底什么是同步什么是同步讷?那还得先问问一下我们通成也在一些框架上使用遇到一些什么问题,比如什么是阻塞和非阻塞,什么是并发和并行等问题去了解:

我这里就不阐述太多把,这个🔥码农富哥 有详细答疑解惑。

关于同步框架-Bottle

也许大家肯定回有一堆的疑问为啥还使用这个小众的框架,其实我觉得对于框架之争,我个人是觉得哪个顺手,就用哪个,大致他们之前性能差距也不是非常的大,限于框架之争中,我个人觉得毫无意义。flask 也罢,bottle也罢,Django也好,其实大家本质都是一样,都是为了业务开发而生。孰优孰劣,用了之后冷暖自知!

为啥用这个框架,也是因为我第一次接触后端来,我的主管大大也是使用这个框架来处理我们的生产环境上业务,自然而然它也成了我的入门的第一个框架之一。

END

好了各位,以上是关于bottle序文篇,没什么营养,主要是对接下来一些列文得一些开篇得铺垫!

小钟同学 | 文 【原创】【转载请联系本人】| QQ:308711822