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

如何无需等待响应,每隔30秒执行一次API请求?

解决每隔30秒触发API调用、无需等待响应的方案

方法1:用并行控制器拆分计时和请求

  • 保留你原来的Loop Controller(循环次数按需设置,或者勾上永久循环)
  • 在Loop Controller下面加个Parallel Controller(并行控制器,记得勾选“Execute each sampler in parallel”选项)
  • 给并行控制器建两个子节点:
    • 第一个节点放你的Image API请求
    • 第二个节点加Constant Timer,设成30000毫秒(也就是30秒)
  • 逻辑说明:并行控制器会同时启动两个分支,Timer分支到点就结束,直接触发Loop进入下一次循环;API请求自己跑自己的,不会卡住Timer的计时。不管API响应要多久,下一次请求都会准点在30秒后触发。

方法2:用独立线程组+调度器控节奏

  • 新建一个Thread Group(线程组)
  • 配置线程组:
    • 线程数设1(需要多并发就调大)
    • 循环次数勾“永久”
    • 打开调度器,启动延迟设0,持续时间填你要跑的总时长
    • 在Image API请求前面加Constant Timer,延迟设30000毫秒
  • 逻辑说明:线程组会严格按30秒的间隔触发请求,不管上一次请求有没有跑完。因为计时是从上一次请求开始算的,不是等它结束才开始算。

方法3:用代码硬控定时逻辑

  • 在Loop Controller里加个JSR223 Sampler
  • 在脚本框里写Groovy代码,自己控制计时和请求触发:
// 记录当前时间
def currentTime = System.currentTimeMillis()
// 标记要触发API请求
ctx.getSamplerContext().put("triggerRequest", true)
// 计算需要等多久,保证刚好30秒间隔
def waitTime = 30000 - (System.currentTimeMillis() - currentTime)
if (waitTime > 0) {
    sleep(waitTime)
}
  • 把你的Image API请求放在这个Sampler后面,也可以通过JSR223前置处理器判断是否触发请求
  • 逻辑说明:这个方法完全绕过JMeter默认的等待逻辑,自己控制时间,间隔精度更有保障。

注意点:

  • 并行控制器需要JMeter 5.0及以上版本,老版本可能没有该组件
  • 调整线程数时要注意服务器负载,避免压垮目标服务
  • 测试时可以查看结果树,确认请求触发间隔是否符合预期

内容的提问来源于stack exchange,提问作者Kalpesh Salvi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:05:22