作为一个小小的背景故事,我正在开发一个基于来自网状网络的数据包数据管理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>
答案 0 :(得分:2)
也许我应该抛弃Django并扩展Python的BaseHTTP类来处理我的请求/响应?
放弃Django for Python的BaseHTTP不会改变HTTP是无状态协议的事实,你想要为它添加状态。你是正确的,根据缓存后端的不同,在缓存中存储状态有点不稳定。您可以将其切换到会话而不是缓存。
也许我应该创建一个单独的应用程序来保留&#34;状态&#34;和Django管它通过套接字请求数据?
是的,这似乎是一个可行的选择。再次,HTTP是无状态的,所以如果你想要状态,你需要在某个地方坚持它,而数据库是你可以存储它的另一个地方。
答案 1 :(得分:1)
这听起来像Redis和MongoDB有效处理的存储问题。您应该能够找到合适的数据结构来跟踪您的数据包数据,并匹配支持以创建廉价的原子更新来启动。