Skip to content

Latest commit

 

History

History
75 lines (50 loc) · 2.33 KB

const_requests.mdx

File metadata and controls

75 lines (50 loc) · 2.33 KB

export const description = '在此页面中,我们将深入探讨如何通过不同的接口实现符合预期的交互。'

实现身份验证后,蝙蝠侠担心在高峰时段,尤其是小丑企图释放阿卡姆疯人院所有罪犯时,可能会引发大量请求,导致服务器崩溃。为此,Robyn 向他介绍了常量请求和多核扩展功能,以增强应用程序的性能。

常量请求

Robyn 告诉蝙蝠侠,可以为每个路由预处理响应,这样即使在路由处理之前,响应就已准备好。这样做可以减少访问路由器的次数,从而提高响应速度。

<CodeGroup title="Request" tag="GET" label="/hello_world">

  ```python {{ title: 'untyped' }}
  @app.get("/", const=True)
  async def h():
      return "Hello, world"
  ```

  ```python {{title: 'typed'}}
  @app.get("/", const=True)
  async def h():
      return "Hello, world"

  ```
</CodeGroup>

多核扩展

Robyn 告诉蝙蝠侠,可以使用 --workers 参数将应用程序扩展到多个核心。这样,系统会创建多个应用实例并分配负载,从而提升性能。

  ```python {{ title: 'untyped' }}
  python3 app.py --workers=N --process=M
  ```

  ```python {{title: 'typed'}}
  python3 app.py --workers=N --process=M
  ```
</CodeGroup>

authenticate 方法应在用户通过身份验证时返回 Identity 对象,否则返回 NoneIdentity 对象可以包含任意数据,并可以通过 request.identity 属性在路由方法中访问。

注意:该身份验证系统在底层主要通过 `before request` 中间件实现。您可以忽略此机制,使用自定义中间件实现自己的身份验证系统。然而,Robyn 提供的这一简单易用的解决方案已能满足大多数应用场景的需求。

下一步

在提升了应用程序的性能后,蝙蝠侠非常高兴,并希望应用也可以接收从前端项目中发出请求。

然而,这是他却遇到了 CORS(跨源资源共享)问题!于是,他向 Robyn 咨询如何解决这个问题。Robyn 向他介绍了相关的功能: