我正在使用Flask在python应用程序中开发Web服务器。我正在实现这种情况:客户端(它不会是浏览器)发送请求,服务器在后台执行一些长任务,并在完成时将响应发送回客户端异步。有可能吗?
答案 0 :(得分:6)
使用HTTP协议无法完成您的要求。每个请求都会同步收到响应。最接近你想要的是:
客户端发送请求,服务器立即响应作业ID,同时也为此长计算启动后台任务。
然后,客户端可以通过在新请求中发送作业ID来轮询服务器的状态。响应再次立即生成并包含作业状态,例如“正在进行”,“已完成”,“失败”等。服务器还可以返回进度百分比,客户端可以使用该百分比来呈现进度条。
您也可以实现Web套接字,但这需要启用套接字的服务器和客户端。