我需要一个简单的Web服务器,它可以解析它接收到的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处理,那么您应该将这些工作旋转到工作队列或专用工作人员。