我有一个 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 分钟),应用程序仍然使用旧的配置值。
我做错了吗?我不应该完全依赖 Lambda 函数中的全局状态吗?