Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2年前关闭。
在我看来,系统有一个阶段。系统可以是生产系统,质量保证系统或开发系统。
我知道应该避免基于阶段的条件,并且在测试中应该使用模拟来更改事物。例如,第三方系统在单元测试期间不可用,应使用模拟来伪造第三方系统的存在。
但是有时候我有这样的条件:
到目前为止,
我想使用尽可能多的开源解决方案,并避免自己编写基本的东西。
有没有比使用上述本地解决方案更好的方法?
马丁·彼得斯(Martijn Pieters)说:
这是因为也没有一种“千篇一律”的配置解决方案。而且永远也不会。
这让我感到难过。我仍然希望将来会有一个“最低的共同点”。
然后在您的启动脚本中,切换功能。有时在settings.py文件中执行此逻辑可能很有用,但我不希望这样做,因为每次环境变化时我都必须对其进行修改。这完全取决于您的应用程序如何部署。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2年前关闭。
在我看来,系统有一个阶段。系统可以是生产系统,质量保证系统或开发系统。
我知道应该避免基于阶段的条件,并且在测试中应该使用模拟来更改事物。例如,第三方系统在单元测试期间不可用,应使用模拟来伪造第三方系统的存在。
但是有时候我有这样的条件:
if settings.STAGE == constants.STAGE_DEV:
....
到目前为止,
constants
来自我们的旧版库。我想使用尽可能多的开源解决方案,并避免自己编写基本的东西。
有没有比使用上述本地解决方案更好的方法?
马丁·彼得斯(Martijn Pieters)说:
这是因为也没有一种“千篇一律”的配置解决方案。而且永远也不会。
这让我感到难过。我仍然希望将来会有一个“最低的共同点”。
最佳答案
我认为您应该考虑改变轨道。尽管环境的概念(我通常将其称为ENV)在部署脚本,启动脚本,Dockerfile等中很常见且很有用,但将它们包含在应用程序代码中必然会造成麻烦。
更好的解决方案是让您的启动脚本了解环境并配置(或切换)特定功能。
例如。,
if settings.smtp_configured:
send_email()
然后在您的启动脚本中,切换功能。有时在settings.py文件中执行此逻辑可能很有用,但我不希望这样做,因为每次环境变化时我都必须对其进行修改。这完全取决于您的应用程序如何部署。
关于python - 基于Stage的条件(dev,qual,prod),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52943662/
10-12 18:50