我正在建设一个网站,在那里用户被发送一个随机的项目。每个视图将涉及更新许多变量,如上次看到的内容以及下一次随机选择将来自哪些类别。但是当我想起来的时候,我觉得这段代码只有在一个接一个的请求发生时才能工作,如果用户发出并行请求就会有问题。我想知道这个问题是真的还是django通过对并行请求进行排队来处理它。如果这是真的,那么我正在考虑将新的请求(第二个或第三个并行请求)重定向到“每个会话页面一个请求”。我知道用户发出并行请求并破坏逻辑的可能性很小,但我仍然必须注意这一点。
发布于 2012-12-31 21:41:17
做这些决定不是Django的工作。这与你将要使用的服务器技术有更多的关系(例如nginx,gunicorn,postgresql等)。
如果你按照web应用运行的方式设计你的应用(即无状态),你不需要担心,所有与并发相关的东西都应该从你的“单一事实来源”中透明地处理,在你的情况下,应该是数据库。
如果你的web应用的设计/逻辑不符合这些原则,它很可能是有缺陷的,你需要重新设计它。
如果你真的认为你的应用程序是特例,给我们提供一些更具体的例子,或者更好的是,给我们展示一些代码。
发布于 2013-01-01 00:20:50
对于Django应用程序,对同一用户的并行请求是可能的,所以您必须自己处理它。好的原则是尽量避免在后端有状态。你可能会考虑是否可以重新设计你的前端来处理这个状态。然而,这并不总是可能的。
一种方法是在后端保持状态是使用快速的内存数据库,如Memcached,MongoDB或Redis。我相信,如果使用得当,这些将允许原子操作。一种选择是使用公开原子操作的Djangos cache framework (至少在由memcached支持的情况下)。
https://stackoverflow.com/questions/14102047
复制相似问题