Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过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