3

我正在使用 Django 1.5.1 开发一个网站,我对并发有两个疑问。现在我在开发服务器上运行。

  1. 当多个用户同时访问网站时,默认情况下,Django 会在不同的执行线程中运行每个请求吗?还是必须在网络服务器(例如 Apache)中进行配置?
  2. 如果多个用户同时修改同一个对象,我会遇到问题吗?如果是这样,你如何解决这个问题?使用锁?

谢谢你的帮助!

4

2 回答 2

4
  1. 它的网络服务器特定。如果您将其配置为在不同的进程中运行,则请求将在新进程中处理。如果您配置有线程,它将在线程中。

  2. 是的。想象一下,user1 正在查看/编辑对象 A(从 DB 中检索)。user2 删除该对象。然后 user1 尝试保存它。您需要在代码中明确处理此类情况。

    • 这些问题很可能与数据库有关。因此,在某些情况下,您可以使用事务来提供帮助。
    • 在其他一些情况下,您可以定义策略。例如上面提到的情况,当 user1 尝试保存对象时,它不在 db 中,您可以创建一个。
于 2013-05-27T10:50:10.710 回答
0

1)特定于网络服务器。

2)看看django-concurrency它使用乐观并发控制模式处理并发编辑。

于 2013-09-28T00:06:17.773 回答