运行 仅在一个生产实例上发条(rails capistrano)
Run clockwork only on one production instance (rails capistrano)
我有一个生产服务器,有两个实例 app1 和 app2,我使用 capistrano 部署我的应用程序,即:cap app1 deploy,cap app2 deploy。
我现在正在配置时钟来安排我延迟的工作。但是作业被安排了两次,因为应用程序部署后 app1 和 app2 上的发条进程 运行s。
如何强制 capistrano 运行 仅在 app2 上进行发条处理?
感谢提示。
米罗斯拉夫
解决方案
将以下设置添加到 deploy.rb:
set :clockwork_role, :clock
然后只配置其中一个实例使用角色:clock,即:
server 'URL', user: 'deploy', roles: %w{app db web clock}
在你的情况下,你可以在一种情况下将一些配置变量设置为 true
,在第二种情况下设置为 false
,并在设置时钟时检查它。
但要提一下,您使用不同的 'stages'(通常是 'staging'、'production'、'qa'、'features' 等)一个阶段的不同服务器。
Capistrano 有 'roles'(应用程序、数据库、后台作业等),每个都可以有多个服务器。
另请说明您使用的是哪个 capistrano 版本 - 从 2 到 3 有很大的变化
我有一个生产服务器,有两个实例 app1 和 app2,我使用 capistrano 部署我的应用程序,即:cap app1 deploy,cap app2 deploy。
我现在正在配置时钟来安排我延迟的工作。但是作业被安排了两次,因为应用程序部署后 app1 和 app2 上的发条进程 运行s。
如何强制 capistrano 运行 仅在 app2 上进行发条处理?
感谢提示。 米罗斯拉夫
解决方案
将以下设置添加到 deploy.rb:
set :clockwork_role, :clock
然后只配置其中一个实例使用角色:clock,即:
server 'URL', user: 'deploy', roles: %w{app db web clock}
在你的情况下,你可以在一种情况下将一些配置变量设置为 true
,在第二种情况下设置为 false
,并在设置时钟时检查它。
但要提一下,您使用不同的 'stages'(通常是 'staging'、'production'、'qa'、'features' 等)一个阶段的不同服务器。 Capistrano 有 'roles'(应用程序、数据库、后台作业等),每个都可以有多个服务器。
另请说明您使用的是哪个 capistrano 版本 - 从 2 到 3 有很大的变化