【发布时间】:2021-03-19 07:04:27
【问题描述】:
我在 docker celery 容器中使用 dotenv。
容器的代码如下。
在两次运行之间,我将 .env1 的内容从
LOGGING_CONF_FILE=logging1.yaml 到 LOGGING_CONF_FILE=logging2.yaml
然后我触摸文件__init__.py,触发重新加载应用程序
我希望在控制台中看到:LOGGING_CONF_FILE10 logging2.yaml,但我仍然看到 LOGGING_CONF_FILE10 logging1.yaml
如果我再次触摸文件__init__.py,这会触发应用程序的再次重新加载,
我确实在控制台中看到:LOGGING_CONF_FILE10 logging2.yaml 符合预期。
- 为什么 dotenv 没有立即获取 .env1 文件中的更改?
- 另外,为什么“os.unsetenv”和“os.putenv”没有取消设置变量?
当我打印 LOGGING_CONF_FILE 的值时,我得到了一些值(而不是在空字符串上未定义)。
谢谢
cat .env1
...
LOGGING_CONF_FILE=logging1.yaml
def create_app(config_class=Config):
print( 'BEG create_app' )
app = Flask(__name__)
# app.app_context().push()
app.config.from_object(config_class)
from app.errors import bp as errors_bp
app.register_blueprint(errors_bp)
db.init_app(app)
mail.init_app(app)
bootstrap.init_app(app)
pagedown.init_app(app)
migrate.init_app(app, db)
# auth = HTTPBasicAuth()
# auth_token = HTTPBasicAuth()
login.init_app(app)
class ContextTask(celery.Task):
def __call__(self, *args, **kwargs):
with app.app_context():
return self.run(*args, **kwargs)
celery.conf.update(app.config)
celery.Task = ContextTask
...
【问题讨论】:
标签: docker flask celery dotenv