保留Django视图之间的状态

时间:2012-08-03 13:49:22

标签: django state kml

作为一个小小的背景故事,我正在开发一个基于来自网状网络的数据包数据管理KML到googleearth的应用程序。例如:

UDP数据包---> Django ORM将有组织的数据放入DB ---> Django查看读取数据库并将数据包数据(gps,连接等)的KML表示返回给Google Earth。

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

这是我需要帮助的地方。目前,为了保留这个" state",我使用Django的低级缓存API来存储具有无限超时的类。每个请求,我只是从缓存中检索该类,添加到它的结构,并将其保存回缓存。这看起来很有效,而且实际上相当不错;但感觉不对。

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

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

我只是觉得我误用了Django并且对关键数据不安全。并帮忙?

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

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

2 个答案:

答案 0 :(得分:2)

  

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

放弃Django for Python的BaseHTTP不会改变HTTP是无状态协议的事实,你想要为它添加状态。你是正确的,根据缓存后端的不同,在缓存中存储状态有点不稳定。您可以将其切换到会话而不是缓存。

  

也许我应该创建一个单独的应用程序来保留&#34;状态&#34;和Django管它通过套接字请求数据?

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

答案 1 :(得分:1)

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