1

Railsコンソールでこれを行っています:

job = scheduler.at 1.minute.from_now do Service.log.debug 'scheduler works' end
job.schedule_info
=> Wed, 07 Aug 2013 16:14:46 UTC 00:00

schedulerは他のファイルで定義されています:

require 'rubygems'
require 'rufus/scheduler'

def scheduler
  @scheduler ||= Rufus::Scheduler.start_new
end

そして、コンソールで実行すると:

Service.log.debug 'scheduler works'

サービスログファイルが書き込まれます。

問題

scheduler.at 1.minute.from_now do Service.log.debug 'scheduler works' end

1 分後にログに書き込みません。私は何が欠けていますか?どうすればこれをデバッグできますか?

実際の問題

シャットダウンしているように見える EC2 のサーバーがあり、スケジュールされたタスクが実行されていません。

私の開発環境では、タスクを 1 分で実行してテストしたところ、動作しました。これはコンソールではなくサーバーにあります。コンソールでは、前述のように失敗しています。

開発環境

ruby 1.9.3p327 (2012-11-10 リビジョン 37606) [x86_64-darwin12.0.0]

シン 1.5.0

リモート環境

ruby 1.9.3p429 (2013-05-15 リビジョン 40747) [x86_64-linux]

Apache2 2.2.22

旅客 4.0.5

宝石

レール3.2.8

rufus-スケジューラー 2.0.18

4

2 に答える 2

2

それは古典です:

https://groups.google.com/group/rufus-ruby/search?group=rufus-ruby&q=passenger&pli=1 https://groups.google.com/forum/#!searchin/rufus-ruby/passenger (新しいGoogle グループ)

(残念ながら、これらの議論のリンクのほとんどは死んでいます (4 年前...))

Passenger の設定をチェックして、その動作を確認する必要があります。rufus-scheduler スレッドが開始されるプロセスが何らかの形で保持されていることを確認する必要があります。

時間をかけて Passenger の構成/マニュアルを読み、チューニングを試してみてください。

それらが役立つ可能性があることを漠然と覚えています:

http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerPoolIdleTime http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMinInstances

Rufus Scheduler not runningでの Ajet の回答は興味深いものであり、彼は次のように主張しています。

RailsAppSpawnerIdleTime 0
PassengerMinInstances 1
于 2013-08-09T21:49:21.930 に答える