介绍

当您的目标是构建快速、可扩展的REST风格API微服务时, Falcon 是个不错的选择。

这是一个可靠的、高性能的Python Web框架,用于构建大规模应用后端和微服务。Falcon鼓励REST架构风格的 URI到资源的映射,以花费尽可能少的精力同时又保持高效。

Falcon重点关注四个方面:速度、可靠性、灵活性和可调试性。它通过"响应者(responder)" (诸如 on_get()on_put() 等)来实现HTTP。这些响应者接收直接的请求,以及响应对象。

官网地址:https://falconframework.org

安装

Falcon 同时支持CPython和PyPy,后者具有更快的速度。考虑到兼容性,这里默认采用CPython3.7作为解释器。

pip install falcon

ujson在CPython下,可以提高序列化及字符的解析速度,这里我们也安装它

pip install ujson

Cython

尽管falcon已经足够快,但是如果想在生产环境中获得额外的速度提升,可以使用Cython扩展来编译Falcon。下面的命令将安装Cython,然后调用Falcon’s setup.py,而后者会检测Cython并使用系统默认的C编译器编辑Falcon.

pip install cython
pip install -v --no-binary :all: falcon

注意,在OS X系统上,编译Cython需要安装Xcode命令行工具。

WSGI 服务器

这里我们选择使用Gunicorn

pip install gunicorn

快速开始

# things.py

import falcon


class ThingsResource(object):
    def on_get(self, req, resp):
        resp.status = falcon.HTTP_200
        resp.body = 'hello world\n'


# falcon.API()的实例就是可调用的WSGI应用
app = falcon.API()
things = ThingsResource()

app.add_route('/things', things)

使用gunicorn运行上述示例:

gunicorn things:app

# 默认运行在本机的8000端口
[2019-01-08 22:32:25 +0800] [19905] [INFO] Starting gunicorn 19.9.0
[2019-01-08 22:32:25 +0800] [19905] [INFO] Listening at: http://127.0.0.1:8000 (19905)

在另一个终端中请求:

curl localhost:8000/things

# 响应如下
hello world

curl命令使用麻烦,下面我们安装HTTPie并使用它:

pip install --upgrade httpie
http localhost:8000/things

# 响应如下
HTTP/1.1 200 OK
Connection: close
Date: Tue, 08 Jan 2019 22:36:28 GMT
Server: gunicorn/19.9.0
content-length: 12
content-type: application/json; charset=UTF-8

hello world

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐