【发布时间】:2017-04-06 19:54:50
【问题描述】:
我编写了一个快速(哈哈)服务器来接受一个 JSON 有效负载,其中包含一个用于下载存档的 URL。解析 JSON 后,我下载文件,解压缩并将元数据添加到每一行。对于大文件,这可能需要很长时间。
require 'thin'
require 'sinatra'
require 'json'
set :bind, '0.0.0.0'
#Listen on port 4567 at /core/action/parse-v1/parse-file for JSON post
post '/core/action/parse-v1/parse-file' do
request.body.rewind
request_payload = JSON.parse request.body.read
url = request_payload["s3Url"]
compressionType = request_payload["compressionType"]
- 从 s3Url 拉文件的东西
- 根据compressionType解压/tar -xvf/etc文件的东西
- 为文件中的每一行创建一个 JSON 对象并将 request_payload 添加到其中的东西
- 将结果推送到队列进行处理的东西 最后完成,向客户端发送 200(可能在 59 秒前超时)。
目前,这一切都需要相当长的时间,并且始终保持 HTTP 连接打开。如何立即传递“东西”部分并让 HTTP 服务器关闭其连接?
我已经尝试了一些,但我被卡住了。
【问题讨论】: