我们有一个REST服务调用可能需要2分钟以上处理的系统进程。由于在客户端上,我不想等待服务器回复30秒到2分钟的响应,我是否可以将202返回给客户端,以通知它正在处理中,但不一定需要等待进程完?为REST服务异步返回http状态码202?
有没有一种安全的方法来处理这个问题? (我确信这里存在线程安全问题,特别是如果该服务可能会同时触发大量请求,那么创建大量线程可能不是解决方案。)
我们正在探索的是使用批处理每5分钟检查一次,以检查数据库是否需要生成报告(这是系统过程的用途),但我对这种可能性感到好奇。
在此先感谢
编辑 最终产品实际上是被生成的,然后通过电子邮件发送给用户的PDF报告。我主要试图避免等待服务响应返回消费客户的〜2分钟。
所以你真正要问的是,REST服务是否可以返回202 *然后继续处理*? –
正确的,正如http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html状态代码202.我只是试图解决等待部分没有数据库变化atm。批处理是我们尚未实现的未来任务,但如果这种方式是可能的,我们很好奇。 – DavidAndroidDev
@JimMischel所以,是的,你是对的。但是,我认为直到服务完成执行它的方法之前,才会对客户端进行响应。我很好奇,如果我们可以在方法执行期间返回状态码。因此问题的异步性。 – DavidAndroidDev