Python 通过Django从Twisted应用程序访问数据库

Python 通过Django从Twisted应用程序访问数据库,python,database,django,asynchronous,twisted,Python,Database,Django,Asynchronous,Twisted,原始问题 我想在Twisted async应用程序中对数据库运行查询。在示例中,要添加新记录、更新某些内容或只是获取一些数据 我的建议 我考虑在django中创建只有Twisted应用程序才能访问的特殊视图,它将在我需要的数据库上执行所有类型的操作 在示例中,urldomain.com/server/getuserdata/{{user_id}}/将以某种方便的格式(json)返回有关用户的数据 GET/POST请求将在Twisted中进行更改,这样它就不会阻止我的Twisted应用程序(如果我

原始问题

我想在Twisted async应用程序中对数据库运行查询。在示例中,要添加新记录、更新某些内容或只是获取一些数据

我的建议

我考虑在django中创建只有Twisted应用程序才能访问的特殊视图,它将在我需要的数据库上执行所有类型的操作

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

GET/POST请求将在Twisted中进行更改,这样它就不会阻止我的Twisted应用程序(如果我错了,请纠正我)

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

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

我读到的另一种方法

  • twisted,但它自2007年以来没有更新,所以我不想诚实地使用它
  • 将请求存储在Redis中,并由另一个deamon/app或cron运行它们
问题

  • 对Django的GET/POST请求使用不同的对象是一种好方法吗
  • 我能告诉Django Twisted应用程序是可信的,这样它就不会像DDOS一样对待它了吗
  • 对于如此多的请求(当然使用缓存),这是否足够快
  • 有没有更好的方法来完成这项任务
我对Twisted和将异步应用程序与同步应用程序集成还不熟悉,所以如果我键入了一些愚蠢的内容,我很抱歉

对Django的GET/POST请求使用不同的对象是一个好方法吗 接近

我希望我有经验深入回答这个问题。我相信,只要请求是异步的,就不会有问题。我是基于我对龙卷风的基本经验。应用程序请求Web服务是相对常见的,而tornado提供了一种异步方式,在框架中内置了这种方式

我能告诉Django Twisted应用程序是可信的,所以它不会被信任吗 像对待DDOS一样对待它

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

对于如此多的请求(使用 当然可以吗

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

有没有更好的方法来完成这项任务


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

感谢您的完整回答。现在我确信使用这种方法,在阅读了许多关于这个问题的文章后,我发现这种方法并不常见。我不知道Django没有DDOS防护,现在我知道这是文件服务器的责任。嗯,我想我遗漏了一些东西。为什么不直接从Twisted应用程序进行查询?twisted.enterprise.adbapi为最流行的db后端提供了异步api…在我看来,adbapi是不可靠的。另一件事是我必须定义我的db模型两次(对于django和abdapi)。在我看来,使用RESTfulAPI也更安全。Tastypie是django创建RESTful api的绝佳应用程序。使用多个数据库会产生其他问题。