Django中的并发疑问

时间:2013-05-27 10:42:02

标签: python django concurrency

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

  1. 当多个用户同时访问网站时,默认情况下,Django是否在不同的执行线程中运行每个请求?或者必须在网络服务器中进行配置,例如阿帕奇?
  2. 如果用户同时修改同一个对象,是否会遇到问题?如果是这样,你如何解决这个问题?使用锁?
  3. 感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

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

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

    • 问题很可能与数据库有关。因此,您可以在某些情况下使用事务来提供帮助。
    • 在其他一些情况下,您可以定义策略。例如,上面提到的情况,当user1试图保存对象时,它不在db中,你可以创建一个。

答案 1 :(得分:0)

1)特定于网络服务器。

2)看看django-concurrency。它使用optimistic concurrency control pattern处理并发编辑。