2013-01-08 196 views
0

原来的问题数据库访问

我想从扭曲的异步应用程序内运行的查询数据库。在添加新记录的示例中,更新某些内容或仅获取一些数据。

我的建议

我想想,只有扭曲的应用程序可以访问的Django,这将做数据库的所有排序操作,我需要作出特别的看法。

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

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

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

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

另一种方法我读到

  • 扭曲nadbapi,但自2007年以来不是更新,所以我不想在Redis的诚实使用
  • 存储requestes和其他后台程序/应用程序运行它们或cron的。

问题

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

我是新来的扭曲与积分异步应用与同步应用程序,所以我很抱歉,如果我打了一些愚蠢的

+0

嗯,我想我失去了一些东西。你为什么不直接从Twisted应用程序进行查询? twisted.enterprise.adbapi为大多数流行的数据库后端提供异步API ... –

+0

adbapi在我看来是不可靠的。另一件事是我必须定义我的db模型两次(对于django和abdapi)。在我看来,使用RESTful API也更安全。 Tastypie是用于创建RESTful API的django的一款出色应用程序。使用多个数据库会出现其他问题。 –

回答

2

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

我希望我有经验来回答这个问题。我相信,只要请求是异步的,你就可以在扭曲的一面很好地工作。我基于龙卷风的基本经验。对于一个应用程序来说,请求一个web服务是相对常见的,龙卷风提供了一种内置在框架中的异步方式。

我可以以某种方式告诉Django是扭曲的应用程序是可信的,所以它不会 把它当作DDOS?

我不认为django本质上知道什么服务正在请求它。它不会限制速度或开箱即用。它只是响应任何请求。如果这些更多的请求,它可以处理它会崩溃。许多请求django可以处理的是你的项目的变体以及你如何部署它。您可以轻松地使用gunicorn运行它,并在其前面有nginx。如果它没有正确执行,您可以启动另一个gunicorn实例。

请问这是否足够快,请求太多(使用缓存 当然)?

我不认为有人可以说。 YOu可能必须自己进行基准测试。有很多博客帖子/文章都会对各种django服务器配置进行基准测试。

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

我认为这是一种比较常见的方法。通过django通过RESTful界面公开您的方法。使异步重新扭曲。

+0

感谢您的完整答案。现在我确信使用这种方法,在阅读了关于这个问题的许多线索之后,我没有发现这种方法。我不知道Django对DDOS没有保护,现在我认为它是文件服务器的责任。 –