【发布时间】: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