返回顶部
首页 > 资讯 > 后端开发 > Python >python bottle 简介
  • 653
分享到

python bottle 简介

简介pythonbottle 2023-01-31 00:01:38 653人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录 正文  bottle 是一个轻量级的python web框架, 可以适配各种web服务器,包括Python自带的wsgiref(默认),gevent, cherrypy,gunicorn等等。bottle是单文件形式发布,源码在这里可

目录

     

    正文

      bottle 是一个轻量级的python web框架, 可以适配各种web服务器,包括Python自带的wsgiref(默认),gevent, cherrypy,gunicorn等等。bottle是单文件形式发布,源码在这里可以下载,代码量不多,可以用来学习WEB框架。这里也有官方文档的中文翻译

     

      首先我们来运行一下bottle的hello world

    复制代码

    from bottle import run 
    
    if __name__ == '__main__':    
    
    def application(environ, start_response):
            start_response('200 OK', [('Content-Type', 'text/html')])        
            return ['<h1>Hello world!</h1>']
     
        run(host='localhost', port=8080, app=application)

    复制代码

      上面的代码看起来也非常符合wsgi的接口规范。启动改代码,可以看到输出

            Bottle v0.13-dev server starting up (using WSGIRefServer())...

            Listening on Http://localhost:8080/

            Hit Ctrl-C to quit.

      

      输出中加粗部分表明使用的web服务器是python自带的wsgiref。也可以使用其他web server,比如gevent,前提是需要安装gevent,修改后的代码如下:

    复制代码

    from bottle import runimport gevent.monkey
    gevent.monkey.patch_all() 
    if __name__ == '__main__':    def application(environ, start_response):
            start_response('200 OK', [('Content-Type', 'text/html')])        return ['<h1>Hello world!</h1>']
     
        run(host='localhost', port=8080, app=application, server = 'gevent')

    复制代码

    通过server关键字指定web服务器为‘gevent’,输出的第一行变成了:

        Bottle v0.13-dev server starting up (using GeventServer())...

     

    不管bottle用什么web服务器启动,在浏览器输入127.0.0.1:8080,都可以看到

        

     

     

     

    下面介绍bottle中部分类和接口

    bottle.Bottle

        代表一个独立的wsgi应用,由一下部分组成:routes, callbacks, plugins, resources and configuration。

        __call__: Bottle定义了__call__函数, 使得Bottle的实例能成为一个callable。在前文提到,web框架(或Application)需要提供一个callbale对象给web服务器,bottle提供的就是Bottle实例

        def __call__(self, environ, start_response):
          """ Each instance of :class:'Bottle' is a WSGI application. """
           return self.wsgi(environ, start_response)

        下面是Bottle.wsgi函数的核心代码,主要调用两个比较重要的函数:_handle, _cast

    复制代码

        def wsgi(self, environ, start_response):        """ The bottle WSGI-interface. """
            try:
                out = self._cast(self._handle(environ))            # rfc2616 section 4.3
                if response._status_code in (100, 101, 204, 304)\            or environ['REQUEST_METHOD'] == 'HEAD':                if hasattr(out, 'close'): out.close()
                    out = []
                start_response(response._status_line, response.headerlist)            return out

    复制代码

      _handle:处理请求,最终调用到application ,简化后的代码如下:

    1   def _handle(self, environ):2         self.trigger_hook('before_request')3         route, args = self.router.match(environ)4         out = route.call(**args)5         self.trigger_hook('after_request')6         return out

      

      _cast: 

           标准的wsgi接口对Application的返回值要求严格,必须迭代返回字符串。bottle做了一些扩展,可以允许App返回更加丰富的类型,比如dict,File等。 _cast函数对_handle函数返回值进行处理,使之符合wsgi规范

     

    bottle.Route

        封装了路由规则与对应的回调

     

    bottle.Router

        A Router is an ordered collection of route->target pairs. It is used to  efficiently match WSGI requests against a number of routes and return the first target that satisfies the request.

     

    ServerAdapter

        所有bottle适配的web服务器的基类,子类只要实现run方法就可以了,bottle里面有大量的Web服务器的适配。下表来自官网,介绍了bottle支持的各种web服务器,以及各自的特性。

        

    NameHomepageDescription
    cgi
    Run as CGI script
    flupflupRun as FastCGI process
    gaegaeHelper for Google App Engine deployments
    wsgirefwsgirefSingle-threaded default server
    cherrypycherrypyMulti-threaded and very stable
    pastepasteMulti-threaded, stable, tried and tested
    rocketrocketMulti-threaded
    waitresswaitressMulti-threaded, poweres Pyramid
    gunicorngunicornPre-forked, partly written in C
    eventleteventletAsynchronous framework with WSGI support.
    geventgeventAsynchronous (greenlets)
    dieseldieselAsynchronous (greenlets)
    fapws3fapws3Asynchronous (network side only), written in C
    tornadotornadoAsynchronous, powers some parts of Facebook
    twistedtwistedAsynchronous, well tested but... twisted
    meinheldmeinheldAsynchronous, partly written in C
    bjoernbjoernAsynchronous, very fast and written in C
    auto
    Automatically selects an available server adapter

        可以看到,bottle适配的web服务器很丰富。工作模式也很全面,有多线程的(如paste)、有多进程模式的(如gunicorn)、也有基于协程的(如gevent)。具体选择哪种web服务器取决于应用的特性,比如是CPU bound还是IO bound

     

    bottle.run

        启动wsgi服务器。几个比较重要的参数

        app: wsgi application,即可以是bottle.Bottle 也开始是任何满足wsgi 接口的函数

        server: wsgi http server,字符串

        host:port: 监听端口

        

        核心逻辑:

        ServerAdapter.run(app)。

     


--结束END--

本文标题: python bottle 简介

本文链接: https://lsjlt.com/news/182715.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python bottle 简介
    目录 正文  bottle 是一个轻量级的python web框架, 可以适配各种web服务器,包括python自带的wsgiref(默认),gevent, cherrypy,gunicorn等等。bottle是单文件形式发布,源码在这里可...
    99+
    2023-01-31
    简介 python bottle
  • Python~~简介介绍
    Python (英国发音:/paθn/ 美国发音:/paθɑn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于...
    99+
    2024-04-02
  • python简介
    Python是一种开源的面向对象编程语言随着人工智能与大数据分析的火热,python也随之火热起来Python应用广泛,特别适用以下几个方面1.系统编程:提供API(Application Programming Interface,应用程...
    99+
    2023-01-30
    简介 python
  • Python-简介
      @ Python的由来    Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选中Pyt...
    99+
    2023-01-30
    简介 Python
  • Python 简介
    Python介绍与特点(自学python知识整理) Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计: Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于P...
    99+
    2023-01-31
    简介 Python
  • Python——简介
    1、Python社区 Pypi:https://pypi.org/GitHub:https://github.com/StackOverFolw:https://stackoverflow.com/开源中国:https://www.osc...
    99+
    2023-01-31
    简介 Python
  • Python(二)python简介
    1.Python和shell一样,是解释型的编程语言2.Python解释器- cpython- ipython:上一章介绍过- pypy- jython- IronPython: 常用于.Net3.Python脚本查看python命令的位置...
    99+
    2023-01-31
    简介 Python python
  • 【Python】01、Python简介
    一、编程(程序设计)语言简介1、高级语言与低级语言一般来讲高级语言和低级语言有一下特点:高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可...
    99+
    2023-01-31
    简介 Python
  • 01-Python简介
    人生苦短,我用 Python —— Life is short, you need Python 目标 Python 的起源 Python 解释器 是用 C 语言实现的,并能够调用 C 语言的库文件.  Python(蟒蛇) ...
    99+
    2023-01-30
    简介 Python
  • Python matplotlib简介
    本文主要翻译自matplotlib官网  matplotlib.pyplot是一些命令行风格函数的集合,使matplotlib以类似于MATLAB的方式工作。每个pyplot函数对一幅图片(figure)做一些改动:比如创建新图片,在图片创...
    99+
    2023-01-31
    简介 Python matplotlib
  • Python简介———JJ
                          大家好!本人最近刚接触Python,并且打算把Python作为自己Linux上的编程语言。所以有些Python常识想和各位笔友分享一下!        Python(蟒蛇)是一种动态解释型的编...
    99+
    2023-01-31
    简介 Python JJ
  • 001-Python简介
    Python学习笔记之Python简介1、Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。2、Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚...
    99+
    2023-01-31
    简介 Python
  • python - 爬虫简介
    什么是爬虫? 模拟浏览器对网站服务器发送请求解析服务器返回的响应数据,并保存数据 爬虫能获取哪些数据? 原则上所有可以通过浏览器获取的数据都可以爬取爬虫也只能获取爬取浏览器可以正常获取的数据 爬虫的应用场景? 数据分析 (如电影票房、股票信...
    99+
    2023-09-10
    爬虫
  • Python Qt PySide6简介
    自今天起开学学习教程,有网页介绍,有视频,非常的详细。 现将主要内容摘录如下:(结合自己的实际情况,略有增删和变动)(采用边实践边写的模式) Python图形界面开发的几种方案 如果用 Python 语言开发 跨平台 的图形界面的程序,主要...
    99+
    2023-09-12
    python qt 开发语言
  • Python之struct简介
      一、struct简介        看到struct这么英文单词,大家应该并不陌生,因为c/c++中就有struct,在那里struct叫做结构体。在Python中也使用struct,这充分说明了这个struct应该和c/c++中...
    99+
    2023-01-31
    简介 Python struct
  • python中bottle使用实例代码
    模仿学习同事的代码来写的,主要是搞懂python中如何来组织包,如何调用包,如何读取配置文件,连接数据库,设置路由,路由分组。(注:使用的是python3.6) 整体目录设计如下: 根据调用层级从上往下来说: 首先...
    99+
    2022-06-02
    python bottle使用 python bottle
  • Python轻量级Web框架:Bottle库!
    和它本身的轻便一样,Bottle库的使用也十分简单。相信在看到本文前,读者对python也已经有了简单的了解。那么究竟何种神秘的操作,才能用百行代码完成一个服务器的功能?让我们拭目以待。1. Bottle库安装1)使用pip安装2)下载Bo...
    99+
    2023-05-14
    Python web Bottle
  • 【python技能树】python简介
    1 Python定义 Python 是一种简单易学并且结合了解释性、编译性、互动性和面向对象的脚本语言。Python提供了高级数据结构,它的语法和动态类型以及解释性使它成为广大开发者的首选编程语言。 Python 是解释型语言: 开发过...
    99+
    2023-09-01
    python 开发语言 python技能树 python基础知识
  • Python中itertools简介使用介绍
    目录Python中itertools模块一、 简介二、 使用介绍1、 常用迭代器1.1 chain1.2 groupby2、 无穷迭代器2.1 count2.2 cycle2.3 r...
    99+
    2022-12-28
    Python中itertools Python itertools详解 Python itertools
  • bottle框架如何在python 中使用
    这篇文章给大家介绍bottle框架如何在python 中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;4.t...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作