熟悉的http框架。
responder的Python项目详细描述
responder:一个熟悉的python http服务框架
由Starlette提供动力。该async
声明是可选的。View documentation。
这将为您提供一个asgi应用程序,其中预安装了一个生产静态文件服务器、jinja2模板(无需额外的导入)和一个基于uvloop的生产web服务器,自动使用gzip压缩服务请求。
推荐信
"Pleasantly very taken with python-responder. @kennethreitz at his absolute best." —Rudraksh M.K.
"ASGI is going to enable all sorts of new high-performance web services. It's awesome to see Responder starting to take advantage of that." — Tom Christie author of Django REST Framework
"I love that you are exploring new patterns. Go go go!" — Danny Greenfield, author of Two Scoops of Django
更多示例
有关响应程序中可用功能的详细信息,请参见the documentation's feature tour。
安装响应程序
安装稳定释放装置:
$ pipenv install responder
✨?✨
或者,从开发分支安装:
$ pipenv install -e git+https://github.com/taoufik07/responder.git#egg=responder
只支持python 3.6+。
基本思想
这里的主要概念是把烧瓶和猎鹰身上的细微之处结合起来,并把它们统一到一个框架中,还有我的一些新想法。我还想将一些api原语植入请求库,并将它们放入web框架中。所以,你会发现这里的请求有很多相似之处。
- 设置
resp.content
将返回字节。 - 设置
resp.text
返回unicode,而设置resp.html
返回html。 - 设置
resp.media
将返回json/yaml(.text
/.html
/.content
覆盖此设置)。 - 不区分大小写
req.headers
dict(直接来自请求)。 resp.status_code
、req.method
、req.url
和其他熟悉的朋友。
想法
- Flask风格的路由表达式,具有新的功能——所有这些都是使用Python3.6+的新F-string语法。
- 我喜欢Falcon的“每一个请求和响应都被传递到每个视图并进行了修改”的方法,特别是
response.media
,并在这里使用过。除了支持json之外,我还决定支持yaml,因为kubernetes正在慢慢接管世界,而且它将yaml用于所有事情。内容谈判等等。 - 一个内置的测试客户端,它使用您知道并喜爱的实际请求。
- 能够轻松安装其他wsgi应用程序。
- 自动gzip响应。
- 除了falcon的
on_get
、on_post
等方法之外,responder还提供了一个on_request
方法,它可以对每种类型的请求调用,非常类似于请求。 - 内置生产静态文件服务器。
- Uvicorn内置作为生产Web服务器。我本来会选择Gunicorn,但它不会在Windows上运行。另外,uvicorn可以很好地防止slowloris攻击,使nginx在生产中不必要。
- GraphQL支持,通过Graphene。这里的目标是让任何graphql查询都可以神奇地在任何路径上公开。
- 提供运行webpack的官方方式。