У меня есть приложение Chalice, которое считывает данные конфигурации из файла в корзине S3. Время от времени файл может изменяться, и я хочу, чтобы приложение немедленно использовало обновленные значения, поэтому я использую декоратор on_s3_event
для перезагрузки файла конфигурации.
Мой код выглядит примерно такдля наглядности):
CONFIG = {}
app = Chalice(app_name='foo')
@app.on_s3_event(bucket=S3_BUCKET, events=['s3:ObjectCreated:*'],
prefix='foo/')
def event_handler(event):
_load_config()
def _load_config():
# fetch json file from S3 bucket
CONFIG['foo'] = some item from the json file...
CONFIG['bar'] = some other item from the json file...
_load_config()
@app.route('/')
def home():
# refer to CONFIG values here
Моя проблема в том, что в течение короткого времени (возможно, 5-10 минут) после загрузки новой версии файла конфигурации приложение все еще использует старые значения конфигурации.
Я делаю это неправильно? Разве я не должен зависеть от глобального состояния в лямбда-функции вообще?