Uvicron 基本了解

2020-08-14  本文已影响0人  Gascognya

http://www.uvicorn.org/
uvicron官方文档

uvicron有两种运行方式

第一种是代码式
    import uvicorn
    uvicorn.run(app, host="127.0.0.1", port=8000)
第二种是命令式

uvicorn 模块名:app --port=8000 --host=127.0.0.1

个人更倾向于第一种

官方文档在ASGI相关中提到

Uvicorn使用ASGI规范与应用程序进行交互。
该应用程序应公开一个异步可调用对象,该对象带有三个参数:

您可能使用的两种常见模式是基于函数的应用程序:
这解决了我在关于Starlette 源码阅读 (阶段总结一)中提出的问题,证实send与receive是与asgi应用服务器进行通信

基于函数的app
async def app(scope, receive, send):
    assert scope['type'] == 'http'
基于类的app
class App:
    async def __call__(self, scope, receive, send):
        assert scope['type'] == 'http'
        ...

app = App()

官方文档内容比较少,并且没有说明具体的底层操作。等过段时间开一个Uvicorn源码阅读。

上一篇 下一篇

猜你喜欢

热点阅读