求助, nodejs 有什么简单的按间隔调度的库

2024-03-05 12:26:46 +08:00
 rizon

核心需求:nodejs 库,当上一个任务完成后间隔一定时间调度下一个任务。

求助大佬们,有这样的开源库吗。

另外问个问题,在一个自托管运行的 nextjs 项目里,启动调度任务的代码,写在哪个位置,可以让代码启动的时候自动启动呢?

3450 次点击
所在节点    程序员
21 条回复
243634473
2024-03-05 12:35:47 +08:00
青龙面板
sankooc
2024-03-05 13:03:41 +08:00
远古时期 有个 async 库有这个功能
Belmode
2024-03-05 13:05:56 +08:00
node-cron
guiling
2024-03-05 14:14:50 +08:00
一般的库都是定时"开始"执行任务的
如果想根据上一个任务结束时间来延时,可以在任务结束时动态创建下一个任务,大部分库都支持
要求不高的话 settimeout 都行
Jven
2024-03-05 14:27:16 +08:00
xmumiffy
2024-03-05 14:29:57 +08:00
直接每个任务加个 sleep
rocmax
2024-03-05 14:34:08 +08:00
nextjs custom server 启动的时候

https://nextjs.org/docs/pages/building-your-application/configuring/custom-server

不过我建议在 nextjs 只开发处理的 api ,使用外部定时调用服务比如 k8s 的 cronjob 来发请求给 api ,这样扩展性好点。
leopod1995
2024-03-05 14:38:48 +08:00
有固定执行时间/周期,大部分用 cron 类就可以满足。

对待执行时间长,严格要求上一个结束后隔固定时间才能执行的,这种场景其实如楼上所说,setTimeout 不失为一种好的方案。
dudubaba
2024-03-05 15:08:35 +08:00
走定时任务机制啊,任务成功后写入下一个任务 id 到 redis ,然后定时拉取 redis 不是更好
BraydenCai229
2024-03-05 15:09:05 +08:00
node-cron
wangtian2020
2024-03-05 15:25:31 +08:00
setTimeout() 不行吗
上一个任务完成时创建一个 setTimeout()
xudong
2024-03-05 15:32:49 +08:00
nextjs 我估计你的运行时可能是无服务器的,那么你最好把逻辑写成一个 http 接口,外部定时请求这个接口。可以用其他函数计算服务做定时触发调用。
nitmali
2024-03-05 15:42:12 +08:00
rxjs
churchill
2024-03-05 21:36:33 +08:00
找个队列实现,自己写点任务逻辑不比各种定时器稳妥吗
比如 bullmq
sjhhjx0122
2024-03-06 08:24:33 +08:00
简单的就 setTimeout,复杂的用 rxjs
rizon
2024-03-06 11:11:10 +08:00
@nitmali
@sjhhjx0122 rxjs 不是一个响应式框架吗,
yh7gdiaYW
2024-03-06 15:02:15 +08:00
定时任务的话可以用 pm2 ,非常好用以至于我把现在 python 组里的后端部署模板也改成用这个了。
要上一个任务完成后再间隔一段时间执行,可以把触发频率设置的高一点,在任务开头检测下距上次完成过了多久
yh7gdiaYW
2024-03-06 15:03:05 +08:00
或者干脆 while true+setTimeout
Al0rid4l
2024-03-06 18:17:39 +08:00
rizon
2024-03-06 22:20:17 +08:00
@yh7gdiaYW #17 pm2 不是 nodejs 管理的吗,居然还可以做这个,我去看看。谢谢~


@Al0rid4l #19 哇,好多哈哈哈。看来也是挑了很久。我去看看这些,谢谢~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1020738

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX