【问题标题】:rails initializer getting executed multiple times in railsrails初始化程序在rails中多次执行
【发布时间】:2011-09-20 21:02:03
【问题描述】:

我有一个在 apache + 乘客上运行的应用程序,我有一个初始化程序来初始化 rufus 调度程序,然后安排作业。

在 rufus 调度程序中调度重复作业的应用程序启动后,初始化程序似乎被执行了多次。

我不确定为什么初始化程序会在没有重新启动的情况下多次执行。

【问题讨论】:

  • 我看到多个 apache2 pid:root 9382 1 0 16:58 ? 00:00:00 /usr/sbin/apache2 -k 开始 www-data 9383 9382 0 16:58 ? 00:00:00 /usr/sbin/apache2 -k 开始 www-data 9398 9382 0 16:58 ? 00:00:00 /usr/sbin/apache2 -k 开始 www-data 9399 9382 0 16:58 ? 00:00:00 /usr/sbin/apache2 -k 开始

标签: ruby ruby-on-rails-3 passenger initializer


【解决方案1】:

初始化器不适合这样做。每个初始化程序都会为您的 Web 服务器运行的每个进程执行。即你 apache 启动 4 个进程来接受到你的 Rails 应用程序的连接,你的初始化程序被执行 4 次。

一个简单的解决方案是使用 rake 任务作为部署策略的一部分。

【讨论】:

  • 如何初始化调度程序线程?作为初始化程序的一部分,我这样做: $scheduler = Rufus::Scheduler.start_new 我知道这可能是使用应用程序范围的全局变量的不好方法。我还能如何使用它?这是一个小应用程序,所以我没有部署过程,所以每次我重新启动应用程序时,我应该手动运行一个 rake 任务,或者可能有一个 shell 脚本重新启动,然后在它之后运行一个 rake 任务?跨度>
猜你喜欢
  • 2018-04-17
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多