在我在eventmachine上运行的代码中,如何知道是否已调用EventMachine::stop
?
我需要这样,以便在我的延迟中,我不会记录仅仅因为关闭连接而导致的错误消息,因此从操作角度来看并不感兴趣。
是修补代码的唯一方法吗?
答案 0 :(得分:1)
如果您在lib/em/pure_ruby.rb
中查看了EventMachine类的纯Ruby实现的源代码,则会定义一个名为@stop_scheduled
的实例变量。它似乎在内部用于完成您想要做的事情 - 如果我们当前正在关闭,则不执行某些操作。
不幸的是,此变量未作为EventMachine API的一部分公开,因此您无法使用它。
您可能不得不自己重新实现此类功能。将一个实例变量添加到相应的类中,并在代码中有一些保护,如果正在关闭,则不希望执行这些代码。