1

これは私のコードですconfig.ru

require 'rubygems'
require 'bundler'
Bundler.require
require 'faye'


$stdout.sync = true

EM.synchrony do

  EM.error_handler do |e|
    puts e.message
    puts e.backtrace
  end

  Faye::WebSocket.load_adapter('thin')

  o_faye_server = Faye::RackAdapter.new(:mount => '/faye', :timeout => 15)

  puts "Running thin with update"
  thin = Rack::Handler.get("thin")

  thin.run(o_faye_server,:Port => ENV["PORT"].to_i)
  puts "Thin started on #{ENV["PORT"]}"

  EM.add_periodic_timer(120) do
    Fiber.new do
      puts "Output"
    end.resume
  end
end

アプリケーション ログには、次のように表示されます。

2013-03-15T10:10:52+00:00 app[web.1]: Running thin with update
2013-03-15T10:10:52+00:00 app[web.1]: >> Thin web server (v1.5.0 codename Knife)
2013-03-15T10:10:52+00:00 app[web.1]: >> Maximum connections set to 1024
2013-03-15T10:10:52+00:00 app[web.1]: >> Listening on 0.0.0.0:21453, CTRL+C to stop
2013-03-15T10:10:52+00:00 app[web.1]: Thin started on 21453
2013-03-15T10:10:52+00:00 app[web.1]: Output
2013-03-15T10:10:54+00:00 heroku[web.1]: Process exited with status 0

EventMachine は停止しますが、Faye アプリケーションは引き続き Web 要求を処理します。なぜこうなった?また、コードをプッシュすると、次のように表示されます。

2013-03-15T10:24:47+00:00 app[web.1]: Running thin with update
2013-03-15T10:24:47+00:00 app[web.1]: >> Thin web server (v1.5.0 codename Knife)
2013-03-15T10:24:47+00:00 app[web.1]: >> Maximum connections set to 1024
2013-03-15T10:24:47+00:00 app[web.1]: >> Listening on 0.0.0.0:32679, CTRL+C to stop
2013-03-15T10:24:47+00:00 app[web.1]: Thin started on 32679
2013-03-15T10:24:47+00:00 app[web.1]: Output
2013-03-15T10:24:47+00:00 app[web.1]: Output
2013-03-15T10:24:47+00:00 app[web.1]: Output
2013-03-15T10:24:47+00:00 app[web.1]: Output
2013-03-15T10:24:47+00:00 app[web.1]: Output
2013-03-15T10:24:47+00:00 app[web.1]: Output

それらを奇妙な方法でキューに入れるか、リリース間のプロセスを適切に停止していません。誰もこれに遭遇したことがありますか?

4

0 に答える 0