【问题标题】:Django: Atomic operations on a directory in media storageDjango:对媒体存储中目录的原子操作
【发布时间】:2014-05-05 08:33:08
【问题描述】:

我们的 Django 项目为用户提供了创建存储库的接口

  1. 创建新的仓库
  2. 向现有存储库添加新更改

任何用户都可以通过包含更改的 HTTP POST 直接访问任何存储库以进行更改。

如果流量少一点也没关系。但是如果流量增长到多个用户想要同时对同一个 repo 进行更改,该如何处理呢?

我们目前使用Hg (Mercurial) 进行回购

【问题讨论】:

    标签: python django mercurial


    【解决方案1】:

    这是您应该在 Web 应用程序级别而不是 Mercurial 级别解决的问题。如果您可以让人们等待,您可以设置一个分布式锁定方案,其中 Web 工作线程尝试在执行任何操作之前从共享内存/存储中获取特定于存储库的锁。如果它无法获得锁,您可以使用带有retry-after 标头的状态码503 进行响应,或者您让网络工作者线程重试,直到它可以获得锁或超时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多