我使用express在node.js中实现了一个https / REST提供程序。该函数调用Web服务,转换/增强数据并使用响应将转换后的数据作为csv返回。一个 获取请求 的执行时间介于4分30秒到5分钟之间。我想通过调用url来测试实现。 问题:
谷歌浏览器中的执行失败,因为它运行时间很长。没有选择 增加 超时 值。
在modzilla firefox中执行: network.http.response.timeout 已更改。现在请求已执行 一遍又一遍地。看起来完全忽略了响应。
邮递员执行:更改 设置 - >一般 - > XHR超时(以毫秒为单位) (...)。
然而,在相同的秒数后执行停止
消息:“ 无法获得任何回复 ”。
我的问题:我可以使用哪些工具来可靠地测试长时间运行的http REST请求?
答案 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可以用快递集成
答案 2 :(得分:0)
您是否可以控制服务器?如果是这样,你应该改变它的运作方式。而不是期望包含答案的响应的初始请求,您的API应该发出一个令牌(URI),从中可以获得操作的状态。状态将“正在进行中”或“已完成;这是您的答案:......”
您将问题(长时间运行的操作)放到服务器上自己的第一类实体中。