Django - 实时通知系统

Django - Real Time Notification System

我是 Django 的新手,正在构建我自己的应用程序。我想集成从服务器到最终用户的通知系统(个人、组级和广播)。每当他登录他的帐户时,通知栏就会像在 facebook 中一样显示。

当前使用:Django 1.8 & Python 2.7

为了了解,我浏览了很多 link 或博客。我通过了以下几个选项:

  1. Django gevent Socketio:Django 1.8 不支持 到目前为止,我已经在 Django 1.8 中完成了所有工作。请让我知道,在支持和功能方面,切换到 Django 1.6 时我可能会遇到多少问题。

  2. Pusher:我不太了解。在当前现有应用程序中使用 Pusher 的可行性和有用性。是否存在任何兼容性问题?

  3. Swampdragon:似乎与 Django 1.8 存在一些兼容性问题

  4. Django-Tornado,Centrifuge:我有点害怕更改整个代码。另外,不知道以后可能会遇到的问题。

我的问题:

  1. 请说明哪个最适合select,因为后期很难转移到另一个。

  2. 此外,切换到 Django 1.6 是支持 Swampdragon 和 Django Socketio 的更好主意。

请提供可能有帮助的 link。

如有错误,请指正。我需要你的宝贵建议。

您可以停止考虑单体系统并研究微服务模式,您应该至少从以下服务开始:

  1. UI & 核心应用

    此服务是您现有的 django 1.8 应用程序,没有新内容。将此用于您的 UI.

  2. Websocket 服务

    使用您喜欢的任何框架为您的 websocket 创建一个新服务,例如 tornado + django 或任何其他 framework/platform

这样您的核心应用程序就没有任何 "additives" 并且您可以放心地使用 django 开发它。然后,对于其他服务,您可以添加任何其他依赖项,而不会因庞大的依赖项列表对所有系统过度收费。

看看下面的link:http://microservices.io/patterns/microservices.html

我正在研究同样的问题。有一些开源但可定制的解决方案,例如

其中,我正在考虑使用 nginx+uwsgi 服务器设置时 django-websocket-redis,而且它看起来很有前途。顺便说一句,如果你分享你的发现,对每个人都有用。

关于你的问题,

1) Swampdragon+Pusher 是一个很好的组合,因为它减少了很多需要实现的核心内容。

2) 向后移植并不总是一个好的做法。永远不要这样做,除非它会阻止您的应用程序开发。

更新:现在我们有 Django channels(官方承认)。我正在将它用于我的一个实时项目,到目前为止,它对几吨用户的实时更新表现良好。