我正在构建一个向用户发送随机项目的站点。每个视图都将涉及更新大量变量,以了解最后看到的内容以及下一个随机选择将来自哪些类别。但是当我想到它时,我觉得这个代码只有在一个接一个地发出请求时才会起作用,如果用户发出并行请求就会出现问题。我想知道这个问题是否真实,或者django通过排队并行请求来处理它。如果这是真的,那么我正在考虑将新请求(第二个或第三个并行请求)重定向到“每个会话页面一个请求”。我知道用户发出并行请求和破坏逻辑的可能性很小,但我仍然需要处理它。
答案 0 :(得分:0)
做出这些决定并不是Django的工作。这更多地与您将要使用的服务器技术有关(例如,nginx,gunicorn,postgresql等)。
如果您按照网络应用程序的功能设计应用程序(即无状态),您就不必担心,所有与并发相关的内容都应该从您的&#透明处理34;单一的事实来源",在你的情况下应该是数据库。
如果您的网络应用程序的设计/逻辑不符合这些原则,则很可能存在缺陷,您需要对其进行重新设计。
如果你真的认为你的应用是特殊情况,请给我们一些更具体的例子,或者甚至更好,向我们展示一些代码。
答案 1 :(得分:0)
对于Django应用程序,同一用户的并行请求是可能的,因此您必须自己处理它。好的原则是尽量避免在后端拥有状态。您可以考虑是否可以重新设计前端来处理状态。然而,这并不总是可行的。
一种方法是在后端保持状态是使用快速的内存数据库,如Memcached,MongoDB或Redis。我相信如果使用正确,这些将允许原子操作。一种选择是使用公开原子操作的Djangos cache framework(至少在memcached支持下)。