我应该使用orbited或gevent将彗星功能集成到django应用程序中

Fin*_*ish 5 python django postgresql comet gevent

我已经和Django合作了一段时间,并且已经在ubuntu上使用Apache 2 mod_wsgi和PostgreSQL数据库的设置上编写了几个应用程序.

我有一个应用程序,它使用xsendfile通过Django视图从Apache提供文件,并允许用户通过表单上传文件.所有这一切都很好,但我现在想通过允许用户聊天并查看新文件上传时间而不刷新浏览器来提升功能(以及我确定的复杂性).

由于我希望这是可扩展的,我不想连续使用AJAX进行轮询,因为对于大量用户来说这将变得非常沉重.

我已经阅读了更多的帖子,网站和博客,然后我可以指望将彗星功能集成到Django应用程序中,但有很多不同的意见,如何做到这一点,我现在完全困惑.

我应该使用orbited,gevent,iosocket吗?龙卷风在哪里适合这场辩论?

我希望消息也存储在数据库中,因此在写入数据库时​​是否需要任何特殊配置来阻止我的应用程序阻塞?使用Django运行聊天服务器会对我从Apache提供文件的能力产生什么影响?

zee*_*kay 7

我建议使用WebSockets进行双向实时通信.继续按原样运行Django并在另一个端口上运行WebSocket服务器.至于你的数据库阻塞,是的,你需要在编写WebSocket服务器时记住这一点,并使用非阻塞数据库驱动程序,或以某种方式解决这个问题.

客户端你会想要使用Socket.IOweb-socket-js来支持不支持flash的旧浏览器的闪回.

对于服务器,我会亲自倾向于gevent或龙卷风.对于GEVENT有GEVENT-的WebSocketGEVENT-socketio,龙卷风你得到内建的WebSocket的支持,并且可以使用tornadio如果你想使用Socket.IO.Eventlettwisted都支持WebSockets.还有一个非常酷的新项目叫做autobahn,它建立在扭曲的基础上,而meinheld有你可以使用的WebSocket中间件.

WebSockets非常令人兴奋,因此有很多关于这个主题的好帖子.我发现这些帖子很有用: