如何在Python Falcon中使用异步



我正在寻找使用python 3的异步。我正在使用猎鹰框架来构建REST API。无法弄清楚如何使用async等待它。

请通过提供一些示例,也许还有其他框架来帮助我。

谢谢!

更新:在Falcon 3.0时,框架通过ASGI协议支持async/await

为了编写异步Falcon代码,您需要使用App的ASGI风味,例如:

import http
import falcon
import falcon.asgi

class MessageResource:
    def __init__(self):
        self._message = 'Hello, World!'
    async def on_get(self, req, resp):
        resp.media = {'message': self._message}
    async def on_put(self, req, resp):
        media = await req.get_media()
        message = media.get('message')
        if not message:
            raise falcon.HTTPBadRequest
        self._message = message
        resp.status = http.HTTPStatus.NO_CONTENT

app = falcon.asgi.App()
app.add_route('/message', MessageResource())

假设上述片段保存为test.py,则可以将ASGI应用程序作为

运行
uvicorn test:app

用httpie设置并检索消息:

$ http PUT http://localhost:8000/message message=StackOverflow
HTTP/1.1 204 No Content
server: uvicorn
$ http http://localhost:8000/message 
HTTP/1.1 200 OK
content-length: 28
content-type: application/json
server: uvicorn
{
    "message": "StackOverflow"
}

注意,当使用猎鹰的ASGI风味时,所有响应者,钩子,中间件方法,错误处理程序等都必须等待Coroutine功能,因为该框架不执行任何隐式包装或计划执行人。

另请参见Falcon的Asgi教程。

相关内容

  • 没有找到相关文章

最新更新