scriptcat icon indicating copy to clipboard operation
scriptcat copied to clipboard

[低优先] CronJob 应配合 chrome.alarm 避免长期占有offscreen

Open cyfung1031 opened this issue 2 months ago • 3 comments

CronJob 里没用到 chrome.alarm 所以是用 offscreen 不断跑吗? 我本来是打算处理 chrome.alarm 的问题 (避免手提电脑resume时多个alarm即时引发) 但发现只用到四个alarm

定时任务不是用 chrome.alarm 跑的话, 非常依赖offscreen吧 倒过来用 chrome.alarm 的话,就不用offscreen跑时间器


2025/11/09

  • exclude second based cronjob.
  • bucket alarm - 1m 5m 15m 60m 1d
  • if trigger time is within the same minute (+-65s), then execute
  • default no "catch up missed runs"
  • add @crontab-catch-up-missed-runs => provide a number crontab_missed_runs = 0, 1, 2, 3 ...

cyfung1031 avatar Oct 05 '25 08:10 cyfung1031

在offscreen依靠 crontab 这个库处理的,不用 chrome.alarm 主要有两个原因,一个是crontab表达式需要转换成 chrome.alarm,且chrome.alarm不能支持到秒级(虽然这个好像没有很强的需求),另外就是延用老的架构

https://github.com/scriptscat/scriptcat/blob/5e7c077ef250e1b8eef5662bc416b82d62927b52/src/app/service/sandbox/runtime.ts#L206-L208

CodFrm avatar Oct 05 '25 14:10 CodFrm

实际应用应该是以小时作单位吧 这样的话 chrome.alaram 会比较合适 (不用长期保持一个 offscreen占内存)

由于刻度不一样 (alarm 不适用于一分钟以内的刻度) 应该会做一个类似但不同的新meta (不改现有的 @crontab )

日后有时间的话,加这个新meta 功能,你能接受吗

(当然这也考虑到 firefox MV3 的兼容) (用 alarm 做定时器的代码我是有啦)

cyfung1031 avatar Oct 06 '25 00:10 cyfung1031

实际应用应该是以小时作单位吧 这样的话 chrome.alaram 会比较合适 (不用长期保持一个 offscreen占内存)

由于刻度不一样 (alarm 不适用于一分钟以内的刻度) 应该会做一个类似但不同的新meta (不改现有的 @crontab )

日后有时间的话,加这个新meta 功能,你能接受吗

(当然这也考虑到 firefox MV3 的兼容) (用 alarm 做定时器的代码我是有啦)

实际也不好说呀,也有其它的功能依赖offscreen的,始终还是要开启(offscreen中才能使用eval之类执行脚本)

关于@crontab后续可能再增加一下语义化的表达式,例如 every day/hour,但是修改架构使用alarm暂时还是别了,目前来看没有必要,先将现有内容和问题稳定下来吧(虽然我最开始也是想的使用alarm去做,在电脑休眠情况下crontab因为依赖setTimeout这个库似乎有些问题,但是一直没去处理)

CodFrm avatar Oct 06 '25 03:10 CodFrm