http REST消费者超时

时间:2016-12-21 13:08:16

标签: rest http timeout long-running-processes

我使用express在node.js中实现了一个https / REST提供程序。该函数调用Web服务,转换/增强数据并使用响应将转换后的数据作为csv返回。一个 获取请求 的执行时间介于4分30秒到5分钟之间。我想通过调用url来测试实现。 问题:

  • 谷歌浏览器中的执行失败,因为它运行时间很长。没有选择 增加 超时 值。

  • 在modzilla firefox中执行: network.http.response.timeout 已更改。现在请求已执行 一遍又一遍地。看起来完全忽略了响应。

  • 邮递员执行:更改 设置 - >一般 - > XHR超时(以毫秒为单位) (...)。
    然而,在相同的秒数后执行停止 消息:“ 无法获得任何回复 ”。

我的问题:我可以使用哪些工具来可靠地测试长时间运行的http REST请求?

3 个答案:

答案 0 :(得分:0)

curl有一个以秒为单位的--max-time设置,它可以做你想要的。

<table role="grid" class="x1hs" aria-rowcount="5"> <tr class="x1hw"> <th>Name</th> <th>Title</th> <th>Contact Email</th> <th><span style="font-style:italic">Specializations</span></th> </tr> <tr class="x1hx"> <td colpsan="4">Recent Items</td> </tr> <tr class="x1hu" id="dmoTpl:iSearch2::item0" aria-rowindex="1" data-afr-value="469"> <td>Lester Shull</td> <td>Analyst</td> <td>Lester.Shull@acme.com</td> <td><span style="font-style:italic">filing, fresher, physio, </span></td> </tr> <tr class="x1hu" id="dmoTpl:iSearch2::item1" aria-rowindex="2" data-afr-value="299"> <td>Jennefer Patrick</td> <td>Contractor</td> <td>Jennefer.Patrick@acme.com</td> <td><span style="font-style:italic"></span></td> </tr> <tr class="x1hu" id="dmoTpl:iSearch2::item2" aria-rowindex="3" data-afr-value="2072"> <td>Alexis Prentice</td> <td>Contractor</td> <td>Alexis.Prentice@acme.com</td> <td><span style="font-style:italic">support, veteran, ERT, </span></td> </tr> <tr class="x1hu" id="dmoTpl:iSearch2::item3" aria-rowindex="4" data-afr-value="4641"> <td>Hyun Mathias</td> <td>Supervisor</td> <td>Hyun.Mathias@acme.com</td> <td><span style="font-style:italic"></span></td> </tr> <tr class="x1hu" id="dmoTpl:iSearch2::item4" aria-rowindex="5" data-afr-value="3900"> <td>Douglas Hildreth</td> <td>Manager</td> <td>Douglas.Hildreth@acme.com</td> <td><span style="font-style:italic">mentor, </span></td> </tr> </table>

但是,可能值得创建后台作业并轮询完成后台作业。 HTTP不适合长时间运行的任务。

答案 1 :(得分:0)

我建议您在csv文件准备就绪时使用Socket IO与pub / sub进行异步响应在客户端发送请求并将超时时间设置为6分钟,请求中的服务器返回确认以确认文件进程启动,文件准备好后,用Socket IO返回文件,Socket IO可以用快递集成

http://socket.io/

答案 2 :(得分:0)

您是否可以控制服务器?如果是这样,你应该改变它的运作方式。而不是期望包含答案的响应的初始请求,您的API应该发出一个令牌(URI),从中可以获得操作的状态。状态将“正在进行中”或“已完成;这是您的答案:......”

您将问题(长时间运行的操作)放到服务器上自己的第一类实体中。