我的服务SLA为20秒以上。 SparkJava中有没有办法发回102告诉客户端我正在处理请求而不终止请求?
提前致谢。
答案 0 :(得分:4)
如果您的服务器需要超过20秒的时间来回答,您可能希望避免让您的客户等待那么久。另请注意,HTTP状态 102 - 处理只能由符合WebDAV标准的客户端正确处理。
我建议你实现一种任务管理API,例如:
POST /tasks
:创建任务ID,存储执行任务,启动后台进程处理任务,立即将任务ID返回给客户端GET /tasks/:id
:获取ID :id
的任务状态 - 例如pending | done | error
- 根据状态获得适当的结果和/或错误消息;您甚至可以想象发送一些进度数据以向用户显示一种进度条DELETE /tasks/:id
:取消注册ID :id
的任务,删除结果,可选择取消正在运行的任务这种方法的主要优点是它可以让你摆脱客户端和服务器的超时。
主要缺点是: