跳转到主要内容

使用Redis作为数据存储的Django Websocket支持

项目描述

项目主页: https://github.com/jrief/django-websocket-redis

详细的文档可以在[ReadTheDocs](http://django-websocket-redis.readthedocs.org/en/latest/)上找到。

在线演示: http://django-websocket-redis.awesto.com/

使用Redis作为消息队列的Django Websockets

此模块在Django之上实现了Websocket,无需任何额外框架。对于消息传递,它使用[Redis](https://redis.ac.cn/)数据存储,在生产环境中,它旨在在[uWSGI](http://projects.unbit.it/uwsgi/)和[NGiNX](http://nginx.com/)或Apache 2.4.5或更高版本之后运行。

功能

  • 适用于具有数百个打开Websocket连接的Django应用的广泛可扩展性。

  • 使用[gevent](http://www.gevent.org/)在合作并发模型中运行独立的Django主循环,因此只需要一个线程/进程就可以同时控制所有打开的WebSocket。

  • 在开发期间可以完全控制这个独立的主循环,因此可以使用./manage.py runserver像往常一样启动Django。

  • 无需依赖任何其他异步事件驱动框架,例如Tornado、Twisted或Socket.io/Node.js。

  • 正常的Django请求通过Redis与这个独立的主循环通信,顺便说一句,Redis是memcached的良好替代品。

  • 可选地持久化消息,允许服务器重启和客户端重连。

如果不确定这个提出的架构是否是正确地将WebSocket与Django集成的做法,请阅读Roberto De Ioris(uWSGI的BDFL)关于[卸载WebSocket和服务器发送事件(SSE),也称为“安全地将它们与Django结合”](http://uwsgi-docs.readthedocs.org/en/latest/articles/OffloadingWebsocketsAndSSE.html)的文章。

请考虑,无论您使用哪种替代技术,您始终需要一个消息队列,这样Django应用程序就可以“与”浏览器“交谈”。这是因为浏览器和服务器之间的唯一联系是通过WebSocket,因此,根据定义,这是一个长期连接。出于可扩展性的原因,您不能为这些连接中的每一个启动一个Django服务器线程。

版本历史

请参阅[changelog.rst](docs/changelog.rst)

构建状态

[![构建状态](https://travis-ci.org/jrief/django-websocket-redis.png?branch=master) [![下载](http://img.shields.io/pypi/dm/django-websocket-redis.svg?style=flat-square)

问题

请使用问题跟踪器来提问。

许可证

版权 © 2015 Jacob Rief。

MIT许可。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分布

django-websocket-redis-0.6.0.tar.gz (19.3 kB 查看散列

上传

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面