我打算在Heroku上主持一个快速应用程序(我已经在尝试使用单个dyno)。
我想将node-cron用于维护任务(执行一些MongoDB更新)。问题是,确保维护只运行一次的最简单方法是什么?所有dynos都会尝试同时进行维护。
我当前的方法使用MongoDB的原子upserts作为某种信号量(每个dyno尝试为当前维护设置标志)。但那有点难看。
我希望没有单独的工作人员实例,因为它实际上只是一个需要每天运行一次的简单任务。
答案 0 :(得分:1)
我认为这是Heroku Scheduler的好处(https://devcenter.heroku.com/articles/scheduler)。如果您的更新执行时间不长,则可以采用这种方式。您编写了一个JS脚本(例如schedule.js),它知道如何更新您的MongoDB,将它放在您的root中并使用Heroku Scheduler(它带有一个简单的前端)来调度它(node scheduler.js
)at所需的时间。