我需要一个简单的网络服务器来解析它接收到的 url,调用其他一些 ruby 脚本来做一些繁重的处理,然后返回结果 JSON。
歌利亚适合这个吗?据我所见,请求是按顺序处理的。我应该怎么做才能做到这一点?
class MyServer < Goliath::API
def response(env)
res = create_json_response(env["REQUEST_URI"])
[200, {}, res]
end
end
查看“echo”示例以获得更完整的示例:https ://github.com/postrank-labs/goliath/blob/master/examples/echo.rb
Goliath 故意让你建立你的堆栈,并在默认情况下尝试假设很少 - 这为你提供了优化堆栈的灵活性,但需要一些前期设置。
从某种意义上说,请求是“按顺序”处理的,它们是从事件循环中提供的。如果您在 IO 上被阻止,goliath 将开始处理下一个请求。但是,如果您决定暂时进行 CPU 密集型计算,那么您将阻塞反应器。换句话说,这与任何其他“事件”框架(节点等)的行为完全相同。
如果您确实需要进行一些繁重的 CPU 处理,那么您应该将该工作分派给工作队列或专用工作人员。