1

作为一个小背景故事,我正在开发一个应用程序,该应用程序根据来自网状网络的数据包数据将 KML 管道传输到 googleearth。例子:

UDP Packet ---> Django ORM 将有组织的数据放入 DB ---> Django view 以读取 DB 并将数据包数据(gps、连接等)的 KML 表示返回到 Google Earth。

这里的问题是数据库行讲述一个故事并进行查询或一系列查询,这不足以“描绘”这个网状网络。我需要保留一些内部 python 结构和类来维护请求/响应之间的网络“状态”。

这是我需要帮助的地方。目前,为了保留这个“状态”,我使用 Django 的低级缓存 API 来存储一个无限超时的类。每个请求,我只是从缓存中检索该类,添加到它的结构中,然后将其保存回缓存中。这似乎有效,实际上效果很好;但感觉不对。

也许我应该放弃 Django 并扩展 Python 的 BaseHTTP 类来处理我的请求/响应?

也许我应该创建一个单独的应用程序来保留“状态”并且 Django 通过套接字管道它请求数据?

我只是觉得我在滥用 Django 并且对关键数据不安全。和帮助?

我知道这是非常规的,有点疯狂。

(注意:我目前在 Django 实例之外为 UDP 套接字侦听器使用 Django 的 ORM,所以我知道我可以在实例之外使用 Django 的环境。)

4

2 回答 2

3

也许我应该放弃 Django 并扩展 Python 的 BaseHTTP 类来处理我的请求/响应?

为 Python 的 BaseHTTP 抛弃 Django 并不会改变 HTTP 是无状态协议的事实,并且您希望向其添加状态。您是正确的,缓存中的存储状态有些不稳定,具体取决于缓存后端。您可以将其切换到会话而不是缓存。

也许我应该创建一个单独的应用程序来保留“状态”并且 Django 通过套接字管道它请求数据?

是的,这似乎是一个可行的选择。HTTP 再次是无状态的,所以如果你想要状态,你需要将它保存在某个地方,而数据库是另一个你可以存储它的地方。

于 2012-08-03T14:46:12.940 回答
1

这听起来确实像是 Redis 和 MongoDB 可以有效处理的存储问题。您应该能够找到合适的数据结构来跟踪您的数据包数据和匹配支持,以创建廉价的原子更新以启动。

于 2012-08-03T14:49:27.020 回答