将我的Django模型中的更改发送到客户端服务

问题描述

最近,我收到了对我工作的公司的需求。他们希望我使用django构建一个API,该API将为聊天机器人客户端提供支持。基本上应该这样工作: 该API接收一个包含message_receivermessage_body的JSON对象,并将其发送到聊天机器人客户端,该客户端将处理所有“消息发送”内容。大!经过研究后,我决定采用反向逻辑,而不是采用一种使客户端定期ping服务器以搜索要发送的新消息的逻辑,而是采用反逻辑,即只要服务器收到消息,它就会自动发出客户告诉他发送消息的事件。

为此,我偶然发现了一些有趣的工具,例如socket.iodjango channels。我特别喜欢socket.io。因此,在动手之前,我画了所有流程,遇到了一个问题,我在互联网上找不到直接的答案,我研究的大多数教程都集中在展示通信客户端-服务器的工作方式,但是我找不到能清楚地告诉我如何在django应用程序-服务器之间进行通信的人,所以我的问题是...

是否有可能建立一种逻辑,每当保存我的django模型时,我都会发出一个signal,它将触发一个event并使通信服务器->通过websocket使用socket.io

如果您有使用django-channels解决方案,我们将非常欢迎!

非常感谢你们!如果需要任何其他信息,我在这里

解决方法

您可以通过Model中的信号来执行此操作。在您的模型下定义此功能

@receiver(post_save,sender=MyModel)
def my_handler(sender,instance,created,*args,**kwargs):
    ...

    if instance.is_approved:
        mail.send_mail(...)