繁体   English   中英

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

[英]How to push notifications to a browser window?

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

我在芹菜上运行这些。 并且它正在更新数据库中的表。

我每2秒对页面上的DIV进行一次自动刷新,这实际上是在执行SQL查询。 这意味着在显示某些数据之前,将执行许多不必要的SQL查询。 不用说,这正在增加数据库的负载。

是否只有在更新表后才触发刷新?

如果后台任务已分配给特定用户,则可以使用会话数据来指示任务已完成。 在您的Ajax函数中,您可以查看此会话数据,并且仅在有迹象表明已完成此操作时才查看数据库:

https://docs.djangoproject.com/zh-CN/1.8/topics/http/sessions/

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

  • 该文件是在创建后台任务时创建的,带有开始日期和时间。 您可以添加更多信息,例如请求用户的信息。
  • 只要文件存在(通过进一步检查超时,检查文件中的数据),就无需查看数据库。
  • 如果文件不存在,则说明请求已完成,您可以查看要更新的数据库。

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

也许您应该使用Jquery和Ajax来使用此请求。

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

希望对您有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM