浏览器关闭时如何使用flask socketio保存和显示现有进度状态(会话)

浏览器关闭时如何使用flask socketio保存和显示现有进度状态(会话),flask,session-cookies,session-state,flask-socketio,flask-session,Flask,Session Cookies,Session State,Flask Socketio,Flask Session,要求:- 用烧瓶做一个项目 我几乎完成了这个项目。 现在我想实现一些在web开发中非常常见的东西 现在,我可以在UI中显示后台任务的状态,并将事件发送到specfic(request.sid)。现在,如果用户不小心关闭了浏览器并返回到同一页面,那么很明显,除了初始页面之外,他将看不到任何内容(在现有会话中发生的情况) 我想知道一种方法,如果用户再次来到页面,它应该重定向到当前状态页面 我试图实现与任何基于云的解决方案完全相同的东西,例如,如果我从控制台创建一个Ec2实例并关闭它。重新打开后,它仍

要求:-

用烧瓶做一个项目

我几乎完成了这个项目。 现在我想实现一些在web开发中非常常见的东西

现在,我可以在UI中显示后台任务的状态,并将事件发送到specfic(request.sid)。现在,如果用户不小心关闭了浏览器并返回到同一页面,那么很明显,除了初始页面之外,他将看不到任何内容(在现有会话中发生的情况) 我想知道一种方法,如果用户再次来到页面,它应该重定向到当前状态页面

我试图实现与任何基于云的解决方案完全相同的东西,例如,如果我从控制台创建一个Ec2实例并关闭它。重新打开后,它仍将显示当前状态(正在运行、挂起)等的现有操作。。 如何才能做到这一点

如果用户不小心关闭了浏览器并返回到同一页面,显然他什么也看不到

这并不明显。如果您的用户登录到您的应用程序,那么您就知道他们,并且您大概也知道每个用户有哪些挂起的后台任务。当用户返回页面并再次登录时,您应该能够找到与该用户关联的任何后台任务的状态


唯一无法执行此操作的情况是,如果不要求用户进行身份验证,在这种情况下,当用户第二次访问您的页面时,您无法知道之前关闭页面的是同一用户。解决此问题的方法是使用身份验证,以便服务器始终知道您的用户。

是的,您是正确的。让我纠正我的问题。问题是,当同一用户再次打开同一页面时,它不会显示任何以前的状态。我正在考虑将状态存储在服务器端会话中。现在我遇到的问题是,无法在线程内使用flask会话,因为线程内的变量是本地线程。您是否有任何现有的解决方案或想法来实现此.def long_任务(应用程序,i):#全局会话打印“已开始执行{}”。格式化(i)时间。睡眠(5)打印“正在工作”会话['step1'][i][“状态”]=“已完成”-->这不起作用发送消息('step1',{“节点名称”:i,“状态”:“已完成”})将状态存储在数据库中,以便用户重新登录时可以调用。谢谢miguel…我正在考虑跳过数据库部分(我们的团队有一种方法将结果存储在数据库中,然后通过ajax长轮询将结果显示在UI中)。。我实现了socketio…所以我想我们是否可以使用会话来存储现有状态..当浏览器关闭时,会话将消失。您可以将状态存储在cookie中,或者配置用户会话的过期时间,以便在浏览器关闭时保持该状态。