0

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

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

我怎样才能避免这种情况?

4

1 回答 1

2

您应该在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设置一个调度器测功机和 N 个网络测功机。

编辑

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

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

于 2014-01-29T15:19:59.810 回答