Django_Socketio 和 Apache

标签 django apache websocket socket.io

我对网络开发很陌生。最近我一直在使用 Django 创建一个网站。我对在站点中实现 websocket 非常感兴趣。为此,我使用了 django-socketio(可在 git hub 上的 https://github.com/stephenmcd/django-socketio 获得)。使用 django-socketio 文档中建议的 gevent 的 pywsgi 服务器,所有这些都可以正常工作。

通过阅读一些关于 django 的书籍,似乎建议将 Django 与 Apache 和 mod_python 一起使用进行部署。目前,我不确定将 Django、Apache 和 websockets 结合在一起的最佳方式。我是否应该使用 pywsgi 服务器来处理沿 apache 运行的 django-socketio 套接字以服务于项目的其余部分?有没有一种方法可以让 Apache 处理所有事情?我应该不使用 Django-Socketio 吗?我真的很想使用 Django 和 Apache,因为我对它们知之甚少。这比我对其他任何事情的了解都要多:D

无论如何,我的问题是,如果有人知道任何关于使用 Django-socketio 和 Apache 的好文章或文档,那么我可以了解这个主题吗?

谢谢你。

最佳答案

首先,你读到的任何暗示 mod_python 的东西都已经过时了。它不再被开发,并且 mod_wsgi 是使用 Apache 时的正确方法。

据我所知,mod_wsgi 不支持 WebSockets 所需的打开连接类型。在 Google 上的快速搜索显示有一些方法可以让 WebSockets 在 Apache 下工作,但是你需要研究一下它与 gevent/django-socketio 堆栈的工作情况。

我建议使用我在 django-socketio 文档中推荐的 gevent 的服务器来处理 WebSocket 连接。基准测试应该持保留态度,但如果您查看 these results你会发现 gevent 与 mod_wsgi 相当。

django-socketio 提供了方便,让您可以通过单个应用程序实例服务 WebSocket 连接以及常规 Django View 。如果这不适合您,您可以将它们实现为单独的项目,并在 Apache/mod_wsgi 下运行常规 Django 部分。

关于Django_Socketio 和 Apache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8834028/

相关文章:

apache - 使用 SSL 时 VirtualHost 配置(重写)不起作用

apache - 如何让 Apache 完全拒绝一个目录的非 SSL

Django 表单测试失败

python - Django 类常量与数据库查找性能

django - 具有类型和子类型的产品模型 Django 1.10

java - 如何使用 Apache POI 旋转电子表格单元格中的文本?

google-chrome - 调试二进制 websocket

javascript - WebSocket 握手期间出错 : 'Upgrade' header is missing (Apache 2. 4 + mod_proxy_wstunnel)

java - Tyrus - 存储客户端收到的消息

python - 如何使用 Google Task Queues API 安排任务?