在post_compile脚本中执行模式迁移是否有任何缺点

时间:2012-10-16 15:25:41

标签: django heroku django-south

我在heroku上运行了一个django应用程序。我想在任何依赖它们的代码上线之前运行我的南迁移。在快速审查了当前的推荐做法后,我发现了两个建议的迁移过程。

建议1

  1. 提交并推送所有更改
  2. 为每个应用运行heroku run python manage.py migrate <APP_NAME>
  3. 这在步骤1和2之间有一段时间,我的代码假设最新的架构已到位,但db尚未更新。

    建议2

    1. 提交并推送所有数据库更改。
    2. 迁移。
    3. 推送所有代码更改。
    4. 这解决了上一个问题,但是为部署过程增加了更多的复杂性,有一天我会搞砸它。

      潜在解决方案?

      似乎我可以通过使用自定义post_compile脚本避免建议1中的问题将我的部署保持在一个步骤  为我的每个应用调用python $MANAGE_FILE migrate <APP_NAME>(依赖顺序)。

      我没有在任何地方看到这个推荐,所以我的问题是双重的。你能看到这种方法有任何潜在的问题,你有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

如果您的应用程序可以承受一些停机时间,那么最简单的方法就是

  1. 使用$ heroku maintenance:on
  2. 暂停您的应用
  3. 使用heroku run python manage.py migrate
  4. 一次迁移所有应用
  5. 重新启动您的应用:$ heroku maintenance:off
  6. 是否足够或您是否有更复杂的需求?