【问题标题】:Possible to use EM calls in a Thin webapp?可以在瘦 webapp 中使用 EM 调用吗?
【发布时间】:2011-08-23 12:40:49
【问题描述】:

是否可以在 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

【问题讨论】:

    标签: sinatra eventmachine thin


    【解决方案1】:

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

    您可以尝试将 $sock = ... 调用包装在 EM.next_tick {} 中,这应该会延迟执行直到 EM 实际启动。

    我相信,如果没记错的话,您可以在 EM 实际初始化之前向 next_tick 添加内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多