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

Cyclic.sh中Post请求内setInterval无法工作问题求助

问题原因与解决办法

1. 请求结束后req对象被销毁

Express在调用res.send返回响应后,会立即回收req请求对象。你在setInterval回调里直接访问req.body.test时,这个req已经不存在了,要么输出undefined,要么干脆因为对象被回收导致回调无法正常执行。

2. Cyclic.sh的运行机制限制

Cyclic.sh是按需启动的平台,请求处理完成后,进程会进入闲置状态,甚至被平台暂停或回收。你在请求里启动的setInterval属于后台任务,平台不会为了这类任务一直维持进程运行,所以定时器根本触发不了,自然没有日志输出。

怎么改?

第一步:先存好请求参数

把需要的参数提前保存到局部变量里,不要直接在定时器里依赖req对象:

app.post("/test", function(req, res) {
    // 先把req.body.test的值存下来
    const testValue = req.body.test;
    res.send({status: "OK"});
    setInterval(() => {
        console.log(testValue);
    }, 1000);
});

第二步:用Cyclic的定时任务实现长期运行的周期任务

如果需要定时器持续运行,不要在请求处理中启动setInterval——Cyclic的闲置回收机制会终止这类后台任务。你应该使用Cyclic自带的**定时任务(Cron Jobs)**功能,配置好执行周期,让平台主动触发任务,这样才能保证任务稳定执行。

内容的提问来源于stack exchange,提问作者Théo Neubeck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:30:21