Django - 实时通知系统

5

我刚接触Django并正在构建自己的应用程序。我想要将服务器上的通知系统(个人、群组和广播)集成到最终用户中。每当他登录到自己的帐户时,就像在Facebook中一样,通知栏会显示出来。

目前使用:Django 1.8和Python 2.7

我已经阅读了很多链接或博客以了解具体情况。我找到了以下几个选项:

  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. 请解释哪一个是最好的选择,因为在以后移动到另一个可能会很困难。

  2. 另外,切换到Django 1.6是否是支持Swampdragon和Django Socketio的更好想法。

请提供有用的链接。

如果我理解有误,请指正。我需要您宝贵的建议。

2个回答

5
我正在研究同样的问题。有一些开源但可定制的解决方案,例如: 其中,我想尝试使用django-websocket-redis,因为我使用nginx+uwsgi服务器设置,并且它看起来很有前途。顺便说一句,如果您分享您找到的内容,对每个人都会有用。
回答您的问题:
1) Swampdragon+Pusher非常好,因为它减少了需要实现的许多核心事项。
2) 回溯不总是一个好做法。除非它阻止了您的应用程序开发,否则不要这样做。 更新:现在我们有Django channels(官方认可)。我正在我的一个实时项目中使用它,到目前为止,它能够为几千个用户提供良好的实时更新表现。

1
您可以停止考虑单块系统并采用微服务模式,至少应该从以下服务开始:
1. UI和核心应用程序 这个服务是您现有的django 1.8应用程序,没有什么新的。将其用于您的UI。
2. Websocket服务 使用您喜欢的任何框架(如tornado + django或任何其他框架/平台)为您的websocket创建一个新服务。
这样,您的核心应用程序就不会有任何“添加剂”,您可以放心地只使用django进行开发。然后,您可以向其他服务添加任何其他依赖项,而不会使整个系统过度负荷。
请查看以下链接:http://microservices.io/patterns/microservices.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接