0

我正在建立一个网站,向用户发送随机物品。每个视图都将涉及更新许多变量,例如最后看到的内容以及下一个随机选择的类别。但是当我想到它时,我觉得这段代码只有在请求一个接一个发生的情况下才能工作,如果用户发出并行请求就会出现问题。我想知道这个问题是真实的还是 django 通过排队并行请求来处理它。如果这是真的,那么我正在考虑将新请求(第二个或第三个并行请求)重定向到“每个会话页面一个请求”。我知道用户发出并行请求并破坏逻辑的机会很小,但我仍然必须处理它。

4

2 回答 2

0

做出这些决定不是 Django 的工作。这更多地与您将要使用的服务器技术有关(例如 nginx、gunicorn、postgresql 等)。

如果您按照 Web 应用程序的功能(即无状态)设计应用程序,则无需担心,所有与并发相关的内容都应该从您的“单一事实来源”透明地处理,在您的情况下应该是数据库。

如果您的 Web 应用程序的设计/逻辑不符合这些原则,则很可能存在缺陷,您需要重新设计它。

如果您真的认为您的应用程序是特殊情况,请给我们一些更具体的示例,或者更好的是,向我们展示一些代码。

于 2012-12-31T13:41:17.267 回答
0

Django 应用程序可以对同一用户进行并行请求,因此您必须自己处理。好的原则是尽量避免在后端有状态。您可能会考虑是否可以重新设计前端来处理状态。然而,这并不总是可能的。

一种将状态保存在后端的方法是使用快速的内存数据库,如 Memcached、MongoDB 或 Redis。我相信如果使用正确,这些将允许原子操作。一种选择是使用暴露原子操作的Django 缓存框架(至少在由 memcached 支持时)。

于 2012-12-31T16:20:50.197 回答