如何避免Rufus调度器被调用的次数与dynos的数量一样多



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

我的应用程序使用多个dyno,并且调度程序在每个dyno上运行,而不是只运行一个,所以我安排的事件会触发多次(每个dyno一次)。

我该如何避免这种情况?

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

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个网络dyno。

编辑

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

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

最新更新