带Django ORM的Tornado WebSocket,具有共享会话

2024-10-02 20:43:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

那么,怎样才能最好地合并这两个框架,使它们在没有太大变化和性能问题的情况下都能很好地工作呢。在


Tags: 项目django端口函数服务器框架数据库应用程序
1条回答
网友
1楼 · 发布于 2024-10-02 20:43:04

这取决于从tornado进程访问Django函数的次数。如果这样的访问计数很低,那么第一种方法更好。如果很大,那么选择第二个。在

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

  • 大部分项目逻辑将在django项目中。龙卷风只会提供聊天的方式
  • 如果要从tornado访问数据库,那么需要保持django模型和tornado模型的同步。另外,在tornado中,最好使用异步数据库驱动程序。所以,第一种方法可以避免这种痛苦。在

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

我建议检查(甚至可能使用)名为centrifuge的项目。它建立在tornado之上,它提供了实现实时消息的方法。它有restapi,所以您可以从任何其他进程控制它。在这个答案中,django+离心机的工作流程是这样描述的:https://stackoverflow.com/a/26930534/821594

相关问题 更多 >