gpt4 book ai didi

python - 带共享 session 的 Django ORM 的 Tornado WebSocket

转载 作者:太空狗 更新时间:2023-10-30 00:06:57 25 4
gpt4 key购买 nike

我正在创建一个带有聊天应用程序的 python 应用程序。聊天应用程序仅依赖于 Tornado 。但是聊天需要各种数据库访问权限,而 Django ORM 做得很好。我正在使用 tornado websockets 进行聊天。所以我有以下选择:

  1. 在不同的端口上运行这两个进程,每当我需要访问 Django 功能时,我都会向其他端口发出 asyncHTTPClient 请求并获取数据,但会给 Django 服务器带来额外的负载
  2. 在 tornado 服务器中运行 Django 并将 django 项目添加到 virtualenv PYTHONPATH 并直接使用 Django 函数,但这会导致阻塞操作

那么合并这两个框架的最佳方式应该是什么,这样它们都可以很好地工作而不会发生太大的变化和性能问题。

最佳答案

这取决于您需要从 tornado 进程访问 Django 函数的次数。如果此类访问计数较低,则第一种方法更好。如果大,则选择第二个。

但我会尝试实现第一种方法,因为:

  • 大部分项目逻辑都在 Django 项目中。 Tornado 将仅提供聊天方式
  • 如果您要从tornado 访问数据库,那么您需要使您的django 模型和tornado 模型保持同步。此外,在 Tornado 中最好使用异步数据库驱动程序。因此,第一种方法将避免这种痛苦。

在我看来,最好在 django 端和 tornado 端实现一些 REST API,这些进程将通过此 API 相互通信。尝试以这样一种方式设计您的架构,您将需要尽可能少地使用此 API。

我建议检查(或什至使用)名为 centrifuge 的项目.它建立在 Tornado 之上,它提供了实现实时消息的方法。它有 REST api,所以你可以从任何其他进程控制它。在此答案中描述了 django+centrifuge 工作流程:https://stackoverflow.com/a/26930534/821594

关于python - 带共享 session 的 Django ORM 的 Tornado WebSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27139452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com