Django - 实时通知系统

时间:2015-09-22 13:58:21

标签: django websocket push-notification pusher django-socketio

我是Django&的新手。建立自己的应用程序。我想将通知系统(个人,组级和广播)从服务器集成到最终用户。无论何时登录他的帐户,通知栏都会显示在Facebook中。

目前正在使用:Django 1.8& Python 2.7

我已经通过大量的链接或博客来了解。我找到了以下几个选项:

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

  2. Pusher :我不是很清楚。多少是可行的&将Pusher用于当前现有应用程序非常有用。是否有任何兼容性问题?

  3. Swampdragon:似乎与Django 1.8的兼容性问题

  4. Django-Tornado,Centrifuge:我有点害怕改变整个代码。此外,我不知道未来的问题,我可能会面临。

  5. 我的问题:

    1. 请解释哪一个应该最好选择,因为在以后的阶段很难移动到另一个。

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

    3. 请提供可能有用的链接。

      如果我错了,请纠正。我需要你宝贵的建议。

2 个答案:

答案 0 :(得分:4)

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

其中,我正在考虑使用nginx + uwsgi服务器设置来查找django-websocket-redis并且看起来很有希望。顺便说一下,如果你分享你找到的东西,对每个人都有用。

还有你的问题,

1)Swampdragon+Pusher是一个很好的组合,因为它减少了许多需要实施的核心事物。

2)向后移植并不总是一个好习惯。除非阻止您的应用开发,否则永远不要这样做。

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

答案 1 :(得分:1)

您可以停止考虑单片系统并重新审视微服务模式,您应该至少从以下服务开始:

  1. UI&核心应用程序

    此服务是您现有的django 1.8应用程序,没有什么新东西。将此用于您的用户界面。

  2. Websocket服务

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

  3. 这样你的核心应用程序就没有任何“添加剂”了,你可以用django来开发它。然后,对于其他服务,您可以添加任何其他依赖项,而不会对具有大量依赖项的所有系统过度收费。

    请查看以下链接:http://microservices.io/patterns/microservices.html