问题描述
最近,我收到了对我工作的公司的需求。他们希望我使用django
构建一个API,该API将为聊天机器人客户端提供支持。基本上应该这样工作:
该API接收一个包含message_receiver
和message_body
的JSON对象,并将其发送到聊天机器人客户端,该客户端将处理所有“消息发送”内容。大!经过研究后,我决定采用反向逻辑,而不是采用一种使客户端定期ping服务器以搜索要发送的新消息的逻辑,而是采用反逻辑,即只要服务器收到消息,它就会自动发出客户告诉他发送消息的事件。
为此,我偶然发现了一些有趣的工具,例如socket.io
和django 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(...)