Aiohttp 路由 (aiohttp.web.RouteTableDef)

Aiohttp routing (aiohttp.web.RouteTableDef)

我对 RouteTableDef 有疑问。
有一些项目的路由结构是这样的:

1) 有文件 route.py.
routes.py

from aiohttp import web
routes = web.RouteTableDef()

2) 在不同的文件中有一些处理程序,例如: handler1.py

from aiohttp import web
from routes import routes

@routes.get('/get')
async def handle(request):
    name = request.match_info.get('name', "Anonymous")
    text = "Hello, " + name
    return web.Response(text=text)

等等。
3) 和运行应用程序的主文件:

from aiohttp import web
from routes import routes

if __name__ == '__main__':
    app = web.Application()
    app.router.add_routes(routes)

    web.run_app(app, host='localhost', port=8877)

想法是:
所有路由都存储在 routes 变量中,当我们想创建新的处理程序时,我们从 routes.py 导入该变量并使用它。
为了将路由注册到应用程序,我们从 routes.py.
导入 routes 以及如何使其与 aiohttp v3.3.2 一起使用?

问题是:它适用于 aiohttp 版本 2.3.10。
但是有一个真正的项目用这种路由方式并且有效。
如何创建一个单一的地方来存储路线?
我想问题出在 lib 版本中,因为该项目不适用于最新版本的 aiohttp。

将请求处理程序 handle 导入到 web.Application 创建和运行的文件中。在从 routes.py

导入 routes 之前导入它

这里的问题是导入的顺序,正如已经回答的那样。这就是我在每个文件中创建一个 web.RouteTableDef() 然后将它们放在一起的原因之一 app.router:

from .dashboard import routes as dashboard_routes
from .posts import routes as posts_routes

app.router.add_routes([
    *dashboard_routes,
    *posts_routes,
])