【问题标题】:Load the value of a route dynamically in Sanic at startup启动时在 Sanic 中动态加载路由的值
【发布时间】:2021-06-21 19:52:21
【问题描述】:

我想在服务器启动时对外部服务进行异步 HTTP 调用,并从那里获取一个 URL,然后我可以在我自己的 Sanic 路由中使用它。例如,通过httpx 调用获取需要作为我的实际路由的字符串(为简单起见,假设外部服务返回的字符串是api/users/),然后将其用作我的 Sanic 微服务中的路由.

不幸的是,before_server_start 侦听器似乎无法解决问题,因为它在路由加载后运行,如果我尝试更新路由的字符串值,我会得到一个 FinalizationError("Cannot finalize router more than once.")

在定义/添加路由之前,我还有什么方法可以连接我的电话吗?我想让它尽可能地与 Sanic 应用程序耦合,即不使用在它之前运行的实用程序脚本,而是在每次应用程序启动时触发对外部服务的调用。

【问题讨论】:

    标签: python sanic


    【解决方案1】:

    您可以在 before_server_start 活动中通过一个小环岛进行操作。

    @app.before_server_start
    async def setup_dynamic_routes(app, _):
        app.router.reset()
    
        # add your routes here
    
        app.router.finalize()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2016-03-22
      • 1970-01-01
      • 2013-05-22
      相关资源
      最近更新 更多