4

这是我的交易:

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

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

我试图弄清楚这个超过4天。我已经用twisted.reacotr写过写高速公路pubsub客户端,但我只能发送一次消息(在我停止反应器完成django请求后,我无法再次启动它,因为它不可重新启动)。

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

ws4py 不支持频道

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

4

1 回答 1

1

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

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

也应该可以使用上述方法从基于 Django/WSGI/Twisted 的服务器运行基于高速公路的 WebSocket 客户端。

关键是:Twisted 可以充当 WSGI 容器,然后将在工作线程的后台池上运行 WSGI Web 应用程序(可能是阻塞的)。这将允许您使用 Twisted 的异步功能,例如运行 Autobahn - 客户端或服务器。因此,您可能还会重新考虑整体架构:为什么将 Autobahn 服务器作为一个不同的进程运行呢?

于 2013-10-19T06:28:59.773 回答