是否可以在瘦网络应用程序中使用EM调用



是否可以在Thin内部使用EventMachine调用而无需额外初始化?

目前,我有一个由Thin运行的Sinatra应用程序(作为服务运行(。当我尝试使用EventMachine.connect_unix_domain时,我会得到eventmachine not initialized。。。即使Thin(可能还有EventMachine(正在运行。

class App < Sinatra::Base
  $sock = EventMachine.connect_unix_domain("/tmp/appsock.sock")
  # import all routes
  Dir.glob("controllers/*.rb").each { |r| require_relative r }
end

我的猜测(对不起,这个盒子上没有安装em(是因为加载类时会评估代码。此时,thin可能尚未设置,EM可能尚未初始化。

你可以试着把$sock=。。。调用EM.next_tick{},这应该会延迟执行,直到EM实际启动。

我相信,如果内存可用,您可以在EM真正初始化之前向next_tick添加内容。

最新更新