Heroku对CronJob持续收费?Dyno选型及计费咨询
Heroku部署内置CronJob调度程序的计费与Dyno选择问题
我计划在Heroku上部署一款内置CronJob调度器的小型程序,核心调度代码如下:
def cronJob(): asyncio.run(main()) scheduler = BlockingScheduler() scheduler.add_job(cronJob, 'cron', hour=8, minute=0) scheduler.add_job(cronJob, 'cron', hour=17, minute=0) try: scheduler.start() except KeyboardInterrupt: pass
现咨询两个问题:
- Heroku的计费规则,是按程序持续运行的每小时收费,还是仅按每日两次、每次约1分钟的main函数执行时长计费?
- 我应选用哪种Dyno?未来我还会为该项目添加更多CronJob,需确保方案兼容。
问题解答
计费规则说明
Heroku的计费是按Dyno的持续运行时长计算的。你的代码中BlockingScheduler启动后,Dyno会一直处于运行状态——哪怕main()仅执行1分钟,剩余时间调度器只是等待下一次任务触发,Dyno依然会持续占用资源并产生计费。所以是按程序整体运行的每小时收费,而非仅计算main()函数的执行时长。Dyno选型建议
- 测试阶段可尝试免费Hobby Dyno,但它有明显限制:30分钟无外部请求会进入休眠,休眠后无法自动唤醒执行定时任务,且每月有固定免费运行时长配额,无法保证任务准点触发。
- 若需稳定运行,推荐选用付费Hobby Dyno(最低档即可):它不会休眠,能确保所有定时任务按预设时间触发。未来添加更多CronJob时,只要单个任务执行时间不长、不会互相阻塞(
BlockingScheduler默认串行执行任务),该档次Dyno完全兼容;后续若任务资源消耗增大或需要并行执行,再升级到Standard Dyno即可。
内容的提问来源于stack exchange,提问作者Jan Schmid
相关产品推荐
相关产品推荐

