Python Falcon 简介

Python Falcon 简介

Falcon 是一个Python库,用于开发关键任务的REST APIs和微服务。它同时支持WSGI和ASGI规范。Falcon框架是由 Kurt Griffiths 在2013年1月开发的。Falcon的最新版本是3.1.0,于2022年3月发布。

Falcon是一个轻量级的Web开发框架。它的极简设计允许开发者根据需要选择最佳策略和第三方软件包。

Falcon 重要特点

Falcon是根据Apache 2.0许可证的条款发布的。

Falcon的一些重要特性包括 −

  • 最新版本的Falcon支持ASGI、WSGI以及WebSocket。

  • Falcon提供对asyncio的本地支持。

  • 其稳定的接口保证了向后的兼容性

  • Falcon遵循REST架构风格来构建API。

  • 基于类的HTTP资源构建。

  • 高度优化、可扩展的代码库。

  • Falcon通过请求和响应类提供了对头信息和正文的简单访问

  • 中间件组件和钩子可用于DRY请求处理。

  • 傻瓜式的HTTP错误响应和异常处理。

Falcon 设计理念

Falcon尽量减少对象的实例化数量,以避免创建对象的费用,并减少内存的使用。同一个实例将被用于服务该路线上的所有请求。

  • 异常情况由资源响应者(如 on_get()、on_post() 等方法)妥善处理。Falcon并不努力保护响应者的代码。高质量的Falcon API应满足以下要求
    • 资源响应者将响应变量设置为合理的值。

    • 你的代码经过良好的测试,具有较高的代码覆盖率。

    • 在每个响应器中提供自定义错误处理程序,以预测、检测和处理错误。

  • Falcon框架是线程安全的。每个传入的HTTP请求都会创建单独的新请求和响应对象。然而,附属于路由的每个资源类的单一实例在所有请求中共享。中间件对象、钩子和自定义错误处理程序也是共享的。因此,你的WSGI应用作为一个整体将是线程安全的。

  • 从3.0版本开始,Falcon支持 asyncio。 使用 falcon.asgi.App 类来创建一个异步应用程序,并通过ASGI应用服务器(如 Uvicorn) 提供服务。

  • Falcon的异步版本支持ASGI WebSocket 协议。

Falcon 与其他框架的比较

有两大类Python web框架 --全栈 框架和 微型 框架。

  • Django、TurbogearsWeb2Py 是全栈框架。

  • 相比之下,微框架则是简约的,只提供最基本的功能;因此给了开发者选择官方或第三方扩展的自由,只包括他们需要的插件。 Flask、Falcon、Pyramid 都属于微框架类别。

我们在以下参数的基础上将Falcon框架与不同的框架进行了比较 —

性能

与Flask和pyramid等微型框架相比,Falcon应用程序的速度非常快。全堆栈框架一般都很慢。

REST支持

Falcon旨在成为开发REST APIs和微服务的首选框架。FastAPI也鼓励REST开发。Flask和Django没有内置的REST支持。然而,它可以通过扩展来启用。

模板化

Falcon应用程序不应该为模板网页提供服务。它没有捆绑任何模板库。然而,人们可以使用 jinja2Macho 库。另一方面,Flask内置了对 jinja2 的支持 Django有自己的模板库。FastAPI也可以处理任何选择的模板库。

数据库支持

在Falcon中,数据库支持不是内置的。可以使用SQLAlchemy模型与MyQL、PostgreSQL、SQLite等关系型数据库交互。另一方面,Django有自己的ORM框架,可以开箱使用。

Flask应用程序也可以通过Flask扩展与数据库进行交互。TurboGears的早期版本与SQLObject ORM库兼容。较新的版本则与SQLAlchemy兼容。

灵活性

Falcon应用程序非常灵活。它是需要高度定制和性能调整的应用程序的理想选择。FastAPI和Flask的代码也很灵活,不限制用户使用特定的项目或代码布局。

安全性

Falcon没有内置支持以确保安全。其他框架如Django和FastAPI确保了高度的安全性。Flask也对CSRF和XSS攻击等安全威胁提供出色的保护。

测试

Falcon使用unittest和Pytest提供内置测试支持。Flask和Django也支持unittest。FastAPI支持unittest和starlette测试功能。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程