How to catch top level failures on an EventMachine server?

后端 未结 1 740
臣服心动
臣服心动 2021-01-12 08:37

I have an EventMachine server that I am monitoring with monit. Sometimes it crashes, and I am trying to figure out why, but it is unclear to me how I can just log all top le

相关标签:
1条回答
  • 2021-01-12 08:57

    If you want a catch-all error handler, try EM.error_handler. Example from the docs:

    EM.error_handler{ |e|
      puts "Error raised during event loop: #{e.message}"
    }
    

    You may also want more fine-grained error handling, in which case you can use the errback mechanism (see Deferrable). So for example you could have in your reactor loop:

    EventMachine::run do
      server = EventMachine::start_server('0.0.0.0', PORT, MyServer)
      server.errback { # handle error thrown by server here  }
    end
    

    For this to work, include Deferrable in your MyServer, then whenever you want to raise an error, call fail.

    0 讨论(0)
提交回复
热议问题