在 Tornado 中两次定义相同的选项
Define the same option twice in Tornado
在 Tornado 中我想使用基础 settings.py
文件,导入 prod_settings.py
和 local_settings.py
.
因此,该模块中的选项可以相互重复。例如,prod_settings中的DEBUG=False
和local_settings中的DEBUG=True
。
但是我有一个错误
tornado.options.Error: Option 'DEBUG' already defined.
据我所知,我不能定义相同的选项两次。
为什么?如何做到这一点?
谢谢!
您不能多次定义一个选项。您可以在 prod_settings.py
和 local_settings.py
中设置变量 DEFAULT_DEBUG
,然后在 settings.py
中调用 define('DEBUG', default=DEFAULT_DEBUG)
时将其用作默认值。
但是这个问题表明你正在以错误的方式处理事情。在 tornado.options
中,预期的模式是在您的代码中定义一次选项,然后值来自 外部 代码,通过命令行(或配置文件,但命令行更惯用)。因此,您不会有条件地导入 local_settings.py
或 prod_settings.py
,而是有 run-local.sh
和 run-prod.sh
来传递适当的标志。
在 Tornado 中我想使用基础 settings.py
文件,导入 prod_settings.py
和 local_settings.py
.
因此,该模块中的选项可以相互重复。例如,prod_settings中的DEBUG=False
和local_settings中的DEBUG=True
。
但是我有一个错误
tornado.options.Error: Option 'DEBUG' already defined.
据我所知,我不能定义相同的选项两次。
为什么?如何做到这一点?
谢谢!
您不能多次定义一个选项。您可以在 prod_settings.py
和 local_settings.py
中设置变量 DEFAULT_DEBUG
,然后在 settings.py
中调用 define('DEBUG', default=DEFAULT_DEBUG)
时将其用作默认值。
但是这个问题表明你正在以错误的方式处理事情。在 tornado.options
中,预期的模式是在您的代码中定义一次选项,然后值来自 外部 代码,通过命令行(或配置文件,但命令行更惯用)。因此,您不会有条件地导入 local_settings.py
或 prod_settings.py
,而是有 run-local.sh
和 run-prod.sh
来传递适当的标志。