我正在开发一个网络服务,让用户请求验证报告。报告生成每个报告最多可能需要20个小时。当发布新的验证请求时,我返回202 Accepted answer,其中Location设置为处理队列(例如/queue/5
)当轮询队列资源时,会提供一些处理信息:
<queueResponse>
<status>QUEUED</status>
<queuePosition>1</queuePosition>
</queueResponse>
处理成功完成并轮询队列后,303 see other将重定向到创建的资源(例如/reports/5
)。
但是,如果服务器上发生处理错误,我只返回我的queueResponse而不重定向,状态设置为<status>ERROR</status>
。
这是将处理错误告知客户端的最佳方法吗?或者应该在轮询队列以查找失败的验证任务时返回500内部服务器错误?.....
答案 0 :(得分:1)
您当前的解决方案是最好的。排队的进程信息的500错误将表明该资源的请求失败,而不是它报告的进程。
postscript:如果您的API仍在定义中,我建议使用FAILED而不是ERROR,因为它听起来更永久。错误是潜在的可恢复情况,故障不是。