如何避免像没有dynos一样多次调用Rufus调度程序?

我在Heroku运行一个rails应用程序,我使用Rufus Scheduler 。

我的应用程序使用多个dyno并且调度程序在每个dyno上运行而不仅仅是一个,因此我的预定事件多次触发(每个dyno一次)。

我怎么能避免这个?

您应该在Procfile中添加一个运行Rufus调度程序进程的新进程类型:

 web: unicorn -c app/config/unicorn.rb ... # Your existing web dyno process scheduler: rake rufus:scheduler # Add rake task for rufus scheduler process 

然后,您可以使用heroku ps:scale来设置一个调度程序dyno和N web dynos。

编辑

您有一个Rails应用程序,当前包含您的rufus调度程序。 将该应用程序部署到Heroku时,每个dyno上都会安装Rails应用程序代码和所需的库(通过一个或多个buildpacks)。 dyno是一个在您的应用程序中运行进程的虚拟机。

默认情况下,您有一个运行Rails Web应用服务器的dyno。 如果添加第二种类型的dyno,它将具有相同的代码库和库,但运行不同的进程。 在这种情况下,第二个进程将是您的Rufus调度程序进程。