跳转到主要内容

运行在aiohttp上的ASGI应用程序适配器

项目描述

aiohttp-asgi

PyPI - License Wheel PyPI PyPI Coverage Status tox

此模块提供了一种使用任何ASGI兼容框架与aiohttp一起的方法。

示例

from aiohttp import web
from fastapi import FastAPI
from starlette.requests import Request as ASGIRequest

from aiohttp_asgi import ASGIResource


asgi_app = FastAPI()


@asgi_app.get("/asgi")
async def root(request: ASGIRequest):
    return {
        "message": "Hello World",
        "root_path": request.scope.get("root_path")
    }


aiohttp_app = web.Application()

# Create ASGIResource which handle
# any request startswith "/asgi"
asgi_resource = ASGIResource(asgi_app, root_path="/asgi")

# Register resource
aiohttp_app.router.register_resource(asgi_resource)

# Mount startup and shutdown events from aiohttp to ASGI app
asgi_resource.lifespan_mount(aiohttp_app)

# Start the application
web.run_app(aiohttp_app)

安装

pip install aiohttp-asgi

ASGI HTTP服务器

用于启动带有ASGI应用程序的aiohttp网络服务器的命令行工具。

示例

创建 test_app.py

from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Route


async def homepage(request):
    return JSONResponse({'hello': 'world'})

routes = [
    Route("/", endpoint=homepage)
]

application = Starlette(debug=True, routes=routes)

使用 aiohttp-asgi 运行 test_app.py

aiohttp-asgi \
    --address "[::1]" \
    --port 8080 \
    test_app:application

或者使用 python -m

python -m aiohttp_asgi \
    --address "[::1]" \
    --port 8080 \
    test_app:application

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源代码分发

aiohttp_asgi-0.5.2.tar.gz (11.4 kB 查看散列值)

上传时间 源代码

构建分发

aiohttp_asgi-0.5.2-py3-none-any.whl (15.5 kB 查看散列值)

上传时间 Python 3

支持者