在数据库更改时向用户发送通知

我正在建立一个自助餐厅管理系统,其中有两种类型的用户:定制和柜台所有者。

对于自助餐厅提供的每道菜,都有与之相关的独特菜肴。

直到现在,我有一个像学生一样发送POST请求的菜,id和计数器号码到一个更新“订单表”(其中PK为id)的URL。当盘子准备好时,柜台所有者按下“Prepeared” “按钮。

此时,我希望订单紧挨着准备好的客户收到“您的订单准备工作正在进行中”的通知。

我该怎么办? 一种方法是简单地创建一个视图,其参数为customer.id和status,并使用True或Flase进行回复。 如果我收到True,我可以简单地轮询URL并提供通知。

但是,我觉得轮询不是一个更好的方法,因为会有这么多客户登录,每个人都会轮询到服务器,这是不可接受的 。 有更好的方法吗?

这真的取决于你真正需要的东西。

如果通知可以作为用户活动的一部分发送,只需添加用户消息,只要用户在页面上执行操作,就会显示该消息。 django.contrib.messages加上主html模板中的几行就可以了。

但是如果您希望通知是交互式的 – 您可以使用少数PUSH选项之一

有趣的链接:

  • 关于反向ajax的维基百科
  • 彗星

从服务器端,可用的选项很少,最简单的是Green Unicorn 。 使用它将允许您通过少量进程打开和管理数千个连接。

我不知道你是否明白了,但我认为你应该使用websockets

http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/ 

没有重复轮询的“推送”的最简单方法是“ 长轮询 ”,客户端启动请求并在可用时立即获得答案。 无论如何你必须使用一个良好的缩放服务器,但它不会受到任何时候的打击。

有更好但更复杂的服务器推送方式,看看我上面链接的文章。

有两种可能的方式……

  1. 覆盖您的相关模型admin.py 保存方法, 如此处所述

  2. 您可以使用此处描述的信号

使用admin.save_model更容易,适合您的需求。 由于您有table_id,因此您可以将表的订单状态设置为“准备”。

由于我们不能通过http推送数据,我认为轮询是唯一的选择。

你可以通过ajax请求进行轮询,这可以用来更新其他一些统计数据(如果有的话)以使它更具交互性:)