【问题标题】:Database access from Twisted app through Django通过 Django 从 Twisted 应用程序访问数据库
【发布时间】:2013-01-08 15:58:00
【问题描述】:

原来的问题

我想从 Twisted 异步应用程序中对数据库运行查询。例如添加新记录、更新某些内容或获取一些数据。

我的建议

我考虑在 django 中制作只有 Twisted 应用程序才能访问的特殊视图,这将对我需要的数据库执行各种操作。

在示例中,url domain.com/server/getuserdata/{{ user_id }}/ 将以某种方便的格式 (json) 返回有关用户的数据。

GET/POST 请求将在 Twisted 中延迟,因此它不会阻止我的 Twisted 应用程序(如果我错了,请纠正我)。

我的 Twisted 应用程序只会偶尔运行一次这些请求。它不是实时更新数据。实时数据将存储在 Redis 中,一旦我准备好存储它 Django 数据库,我使用存储在 redis 中的数据运行对 Django 的请求。

但是每秒仍然有很多来自服务器的请求(比如说从 100 到 1000)。

我读到的另一种方法

  • twisted nadbapi,但自 2007 年以来就没有更新过,所以我不想老老实实使用它
  • 将请求存储在 Redis 中并由另一个守护进程/应用程序或 cron 运行。

问题

  • 对 Django 的 GET/POST 请求使用延迟对象是一种好方法吗?
  • 我能否以某种方式告诉 Django Twisted 应用程序是受信任的,因此它不会像 DDOS 一样对待它?
  • 这么多请求(当然使用缓存)是否足够快?
  • 有没有更好的方法来完成这项任务?

我是 Twisted 的新手,正在将异步应用与同步应用集成,所以如果我输入了一些愚蠢的东西,我很抱歉

【问题讨论】:

  • 嗯,我想我错过了一些东西。为什么不直接从 Twisted 应用程序进行查询? twisted.enterprise.adbapi 为最流行的数据库后端提供异步 api...
  • adbapi 在我看来是不可靠的。另一件事是我必须定义我的数据库模型两次(对于 django 和 abdapi)。在我看来,使用 RESTful api 也更安全。 Tastypie 是 django 创建 RESTful api 的一个很棒的应用程序。使用多个数据库会出现其他问题。

标签: python database django asynchronous twisted


【解决方案1】:

对 Django 的 GET/POST 请求使用延迟对象是个好方法 方法?

我希望我有经验来深入回答这个问题。我相信只要请求是异步的,你在扭曲的一面就会很好。我基于我对龙卷风的基本经验。应用程序必须请求 Web 服务是相对常见的,而 tornado 提供了一种内置到框架中的异步方式来执行此操作。

我能否以某种方式告诉 Django Twisted 应用程序是受信任的,所以它不会 像 DDOS 一样对待它?

我不认为 django 天生就知道什么服务在请求它。它不会限制速度或开箱即用的请求。它只是响应对其提出的任何请求。如果这些是它可以处理的更多请求,它将崩溃。 django 可以处理多少请求取决于您的项目以及如何部署它。您可以使用 gunicorn 轻松运行它,并让 nginx 坐在它前面。如果它没有按预期执行,您可以启动另一个 gunicorn 实例。

对于这么多请求,这是否足够快(使用缓存 当然)?

我认为没有人可以说。您可能必须自己对其进行基准测试。有许多博客文章/文章对各种 django 服务器配置进行了基准测试。

这个任务有更好的方法吗?

我认为这是一种比较常见的方法。通过 django 通过 RESTful 接口公开您的方法。从 twisted 发出异步请求。

【讨论】:

  • 感谢您的完整回答。现在我确信使用这种方法,在阅读了许多关于这个问题的线程后,我发现这种方法并不常见。而且我不知道 Django 没有针对 DDOS 的保护,现在我认为这是文件服务器的责任。
猜你喜欢
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多