0

原来的问题

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

我的提议

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

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

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

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

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

我读到的另一种方法

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

问题

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

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

4

1 回答 1

2

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

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

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

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

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

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

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

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

于 2013-01-08T16:17:29.770 回答