从Django发送websocket请求

时间:2013-10-18 20:38:22

标签: python django websocket

这是我的交易:

  • 我有一个用autobahn websocket编写的websocket pubsub服务器(基于twisted)。
  • 我有简单的网站连接到服务器并订阅了一个频道
  • 在此旁边,我有一个带有一个应用程序的简单Django项目
  • 最后我打开了终端,用curl get请求命中了我的Django app

请求表单卷曲后点击我的django应用程序和我的视图我需要向服务器发送消息到我的网站订阅的频道。基本上我需要可以向特定通道发送消息的websocket客户端,并且可以在django视图中运行(没有无限阻塞循环)。

我试图在4天内弄清楚这一点。我用twisted.reacotr写了写autobahn pubsub客户端,但是我只能发送一次消息(在我停止反应堆完成django请求后我再也无法启动它,因为它不能重启)。

我已经尝试了djagno-socketio,但是有,但是当我尝试从django视图发送消息时,我看不到客户端。

ws4py不支持频道

感谢您的任何建议。伟大的将是一个例子。

1 个答案:

答案 0 :(得分:1)

您应该能够在1台服务器中运行Django和Autobahn:

这是一个example,展示了如何将Flask / WSGI与Autobahn一起使用。 Django可以在WSGI容器as well中运行。

此外,应该可以使用上述方法从基于Django / WSGI / Twisted的服务器运行基于Autobahn的WebSocket客户端。

重点是:Twisted可以充当WSGI容器,然后在工作线程的后台池上运行WSGI Web应用程序(可以阻止)。这将允许您使用Twisted的异步功能,例如运行高速公路 - 客户端或服务器。所以你也可能会重新思考整体架构:为什么要将Autobahn服务器作为一个不同的流程运行呢?