如何将通知推送到浏览器窗口

How to push notifications to a browser window?

本文关键字:浏览器 窗口 通知      更新时间:2023-09-26

我有一个Django应用程序,它在后台运行计算。计算时间在5秒到2分钟之间。

我正在运行这些芹菜。它正在更新数据库中的一个表。

我正在做一个页面上的DIV的自动刷新每2秒,这本质上做一个SQL查询。这意味着在显示某些数据之前会执行许多不必要的SQL查询。不用说,这会增加数据库的负载。

是否有一种方法只在表更新时触发刷新?

如果后台任务被分配给一个特定的用户,您可以使用会话数据来指示任务已经完成。在Ajax函数中,您可以查看此会话数据,并且只有在有指示完成时才查看数据库:

https://docs.djangoproject.com/en/1.8/topics/http/sessions/

另一个解决方案是使用系统文件,用于同步。例如:

  • 创建后台任务时创建的文件,包含开始日期和时间。
  • 只要文件存在(通过进一步检查超时,检查文件中的数据),就不需要查看数据库。
  • 如果文件不存在,你知道请求已经完成,你可以查看数据库来更新。

这个文件也可以作为Url访问(为了避免Ajax请求)

也许你应该使用Jquery和ajax来做这个请求。

http://api.jquery.com/category/deferred-object/

希望对你有所帮助