介绍

当不再有任何东西需要补充,而是当不再有任何东西需要带走时,最终达到完美。

- Antoine de Saint-Exupéry

Falcon 是一个可靠的、高性能的python web框架,用于构建大规模的应用程序后端和微服务。它鼓励其余的体系结构风格,并尽量少做,同时保持高效。

Falcon应用程序可以在任何WSGI服务器上运行,并且在CPython3.7+和PyPy3.7+下运行起来非常出色。

特征

Falcon试图在保持高效的同时尽可能少地做事情。

  • ASGI, WSGI ,以及 WebSocket 支持

  • 原生的 asyncio 支持

  • 不依赖魔术全局进行路由和状态管理

  • 稳定的接口,强调向后兼容性

  • 通过集中式RESTful进行简单的API建模 routing

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

  • 通过以下方式轻松访问页眉和正文 request and response 对象

  • 通过以下方式处理干请求 middleware 组件和挂钩

  • 严格遵守RFC

  • 惯用语 HTTP error 回应

  • 简单的异常处理

  • 时髦的 testing 使用WSGI/ASGI帮助器和模拟

  • 支持CPython3.7+和PyPy 3.7+

Falcon有什么不同?

我们设计了Falcon来支持大规模微服务和响应式应用程序后端的需求。Falcon通过在任何需要的地方提供裸机性能、可靠性和灵活性来补充更通用的PythonWeb框架。

快。 相同的硬件,更多的请求。Falcon将请求转换为比大多数其他Python框架快几倍的速度。为了获得额外的速度提升,Falcon在有条件的情况下会与赛通一起编译,并且也能很好地与 PyPy .考虑转移到另一种编程语言?先与Falcon+Pypy进行基准测试。

可靠。 我们会尽最大努力避免引入破坏性的变更,当我们这样做时,它们会被完整地记录下来,并且只会被引入(本着 SemVer )主要版本递增。该代码经过了大量输入的严格测试,我们始终需要100%的覆盖率。Falcon不依赖于任何外部python包。

可调试。 Falcon避开魔法。很容易分辨出哪些输入通向哪些输出。为了避免激励使用难以调试的全局状态,Falcon不使用装饰器来定义路由。从未封装或屏蔽未处理的异常。可能令人惊讶的行为,比如自动请求正文解析,都有很好的文档记录,并且默认情况下是禁用的。最后,我们注意保持框架内的逻辑路径简单、浅显和易于理解。所有这些都使得在大规模部署中对代码进行推理和调试边缘案例变得更容易。

很灵活。 Falcon将很多决策和实现细节留给了API开发人员。这给了您很大的自由来定制和调优您的实现。由于Falcon的极简主义设计,Python社区成员可以自由地自主创新 Falcon add-ons and complementary packages

关于Apache 2.0

Falcon是根据 Apache 2.0 License .这意味着您可以在商业应用程序中使用它,而无需同时开放源代码。它还意味着,如果有人恰好贡献了与专利相关联的代码,您将获得使用该专利的免费许可。这是一个很好的交易。

现在,如果你真的改变了Falcon本身,请考虑把你的了不起的工作回馈给社区。

Falcon执照

如个别源代码文件所述,Rackspace Hosting,Inc.和其他贡献者版权所有2012-2017。

根据Apache许可证2.0版(“许可证”)获得许可;除非符合许可证,否则不得使用此文件。您可以在以下网址获得许可证副本:

除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”分发,不提供任何形式的明示或暗示保证或条件。请参阅许可证,了解许可证下管理权限和限制的特定语言。

通过参与此项目,您还同意按照上面描述的Apache许可证2.0版的条款许可源代码。