我如何 try:except 在开发和生产之间?
How do I try:except between development and production?
我对此感到困惑。认为这在开发和生产中都可以正常工作(已经用两种不同的方法在两者上设置了环境变量,但我很明显。错了。它只适用于生产。在开发中它会抛出一个以“[=14”结尾的长错误=]: SECRET_KEY 设置不能为空。"
try:
SECRET_KEY = os.getenv("PRODUCTION_SECRET_KEY")
except:
SECRET_KEY = os.environ.get('DEVELOPMENT_SECRET_KEY')
os.getenv()
doesn't throw an error if the environment variable doesn't exist。因此,即使在您的开发环境中,os.getenv()
调用也很可能会成功,将 SECRET_KEY
设置为空值,从而导致 Django 错误(甚至说设置为空)。
您不应使用 try/except
语句,因为不会引发任何错误。相反,您应该使用 if
语句,例如:
SECRET_KEY = os.getenv('PRODUCTION_SECRET_KEY')
if not SECRET_KEY:
SECRET_KEY = os.getenv('DEVELOPMENT_SECRET_KEY')
让我们做一个简单的单例class!
class Secret(object):
def __new__(cls):
cls.key = os.getenv('PRODUCTION_SECRET_KEY') or os.getenv('DEVELOPMENT_SECRET_KEY')
if cls.key is None:
raise SomeError
我对此感到困惑。认为这在开发和生产中都可以正常工作(已经用两种不同的方法在两者上设置了环境变量,但我很明显。错了。它只适用于生产。在开发中它会抛出一个以“[=14”结尾的长错误=]: SECRET_KEY 设置不能为空。"
try:
SECRET_KEY = os.getenv("PRODUCTION_SECRET_KEY")
except:
SECRET_KEY = os.environ.get('DEVELOPMENT_SECRET_KEY')
os.getenv()
doesn't throw an error if the environment variable doesn't exist。因此,即使在您的开发环境中,os.getenv()
调用也很可能会成功,将 SECRET_KEY
设置为空值,从而导致 Django 错误(甚至说设置为空)。
您不应使用 try/except
语句,因为不会引发任何错误。相反,您应该使用 if
语句,例如:
SECRET_KEY = os.getenv('PRODUCTION_SECRET_KEY')
if not SECRET_KEY:
SECRET_KEY = os.getenv('DEVELOPMENT_SECRET_KEY')
让我们做一个简单的单例class!
class Secret(object):
def __new__(cls):
cls.key = os.getenv('PRODUCTION_SECRET_KEY') or os.getenv('DEVELOPMENT_SECRET_KEY')
if cls.key is None:
raise SomeError