You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用middy warmup中间件时的执行顺序是怎样的?

Middy Warmup 中间件与自定义before钩子执行规则

首先明确核心结论:warmup的预热检查会优先执行,不会直接进入你在链式调用末尾添加的.before()代码块,具体规则如下:

  • Middy的生命周期钩子严格按照注册顺序执行:所有before阶段的逻辑,完全遵循代码里调用.use()、.before()的先后顺序,从先到后依次触发
  • 你最先注册的warmup()中间件,它自身的before钩子会第一个执行:钩子内部会立刻校验当前请求是否为预热请求
    • 若判定为预热请求:warmup中间件会直接返回约定的预热响应,立刻终止整个请求流程,后续注册的cors中间件、requestMiddleware、你自定义的末尾.before()钩子、甚至原始业务handler都不会被执行
    • 若判定为正常业务请求:才会按注册顺序依次执行后续cors中间件逻辑、requestMiddleware逻辑,之后才会进入你写在末尾的.before()代码块,执行完成后再进入原始handler处理业务

对应参考代码如下:

const handler = middy(originalHandler)
      .use(warmup())
      .use(
        cors({
          origins: [fetchEnvironmentVariable('SOME_ENDPOINT')],
          credentials: true
        })
      )
      .use(requestMiddleware())
      .before(async () => {
        // some code
      })

    return handler()

这段代码里的before阶段执行优先级从高到低为:warmup检查 > cors逻辑 > requestMiddleware逻辑 > 自定义before代码 > originalHandler业务逻辑,只要命中预热请求,后面的所有逻辑都会被直接跳过。

内容的提问来源于stack exchange,提问作者Y.H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.04 16:18:27