【发布时间】:2011-12-12 02:52:49
【问题描述】:
我正在构建一个 Ruby Web 服务,它接受 POST 或 PUT 请求,告诉它做一些工作。这项工作涉及移动一些大文件 - 有时通过网络 - 所以这些请求可能需要一段时间。我正在构建一个单独的服务 - 在 Python 或 Node 或任何其他语言中 - 处理对 Ruby 服务的调度和监控请求。
我想将有关 Ruby 应用程序行为的某种定期进度报告发送回调度程序。可能每次成功完成一个离散操作,比如一个文件的移动,都会有一行。
这可以通过标准 Rack 应用程序实现吗?仅供参考,我使用的是 Camping 框架,它与 Sinatra 等没有什么不同。通常您只需从方法返回即可发送响应:
def get
@status = 404
@headers['Content-Type'] = 'application/json'
return Yajl::Encoder.new.encode({error: 'forbidden', reason: 'I don't like you'})
end
我知道我的进程是由 Rack / Web 服务器接口管理的,所以我不知道是否可以在 Rack 中发送流式响应而不深入研究框架的工作方式和与 Rack 对话的方式。有人可以在这里给我一些指点吗?
是的,我知道 Ruby 不是流式 HTTP 服务器的首选解决方案;)
【问题讨论】: