Heroku Scheduler无法使用免费dynos调度,如何仅消耗免费dyno时长?
Heroku Scheduler免费dyno调度问题解决方案
目前Heroku Scheduler已经不再支持直接使用免费dyno配额运行调度任务,你在下拉菜单看到的付费规格是官方当前的默认设定,若要仅消耗免费dyno时长运行定时任务,可以参考以下两种可行方案:
- 方案一:使用
Heroku Clock Process替代Scheduler
你可以在项目根目录的Procfile中新增clock进程配置,以Node.js项目为例配置为clock: node clock.js,其他语言替换为对应调度脚本的执行命令即可。Clock进程的运行时长会被计入你的免费dyno配额,只要你账号下所有dyno(web、worker、clock等)的总运行时长不超过每月550小时的免费额度,就不会产生额外费用。你可以直接在clock脚本中引入对应语言的定时任务库(比如Python的APScheduler、Java的Quartz、JavaScript的node-schedule等)实现任意规则的定时任务触发,灵活度比官方Scheduler更高。 - 方案二:通过外部定时触发调用免费web dyno接口
如果你不想额外占用dyno配额运行常驻clock进程,可以在现有web服务中新增一个执行目标任务的接口,再通过定时触发服务定期请求该接口,请求会自动唤醒处于休眠状态的免费web dyno执行任务,消耗的是你现有web dyno的免费时长,只要请求频率符合免费dyno的休眠规则(30分钟无请求自动休眠)就不会产生额外费用。
注意:免费账号的所有类型dyno共享每月免费时长额度,如果你同时运行多个dyno,建议定期在账号后台监控时长消耗,避免超出配额产生账单。
内容的提问来源于stack exchange,提问作者friendshipcult
相关产品推荐
相关产品推荐

