我有这个 lambda 处理程序
def lambda_handler(event, context):
args = json.loads(event['data'][0]['body'])
batch = args['batch']
execute_ecg_batch(batch)
execute_ecg_batch
批处理函数存在于同一文件中,并且具有大量专注于业务逻辑的功能。完成后,需要写入 Google Sheets。谷歌表格取决于 args
中 lambda_handler
对象的一些参数。
如果我的
GoogleSheet
基本上是一个单独的类,其对象是这样创建的
gsheet_writer = GoogleSheetWriter(args.param1, arg.param2, args.param3)
我应该如何以Pythonic方式“构建”我的代码?
一个想法是我可以在
gsheet_writer
中放大一个 lambda_handler
对象并传递它。然后它需要到处经过。
如果我全局创建它,那么它在创建时将无法访问
args
,并且我的代码必须确保它在创建之前设置这些值。
想法?
这是一种为 Lambda 处理程序和 Google Sheets 编写构建代码的 Pythonic 方法:
将
gsheet_writer
传递给 execute_ecg_batch
函数:
您可以使用 gsheet_writer
中所需的参数在 lambda_handler
内创建它,而不是全局或在 lambda_handler
内创建 args
。然后,将此 gsheet_writer
对象作为参数传递给 execute_ecg_batch
。这样,execute_ecg_batch
就可以访问 Google Sheets writer 对象,而不需要全局变量。
在
args
中处理execute_ecg_batch
:
如果 execute_ecg_batch
需要访问 args
参数来写入 Google Sheets,您可以将这些特定参数与 execute_ecg_batch
一起直接传递给 gsheet_writer
。
以下是如何修改代码的示例:
def lambda_handler(event, context):
args = json.loads(event['data'][0]['body'])
batch = args['batch']
# Create Google Sheets writer object within lambda_handler
gsheet_writer = GoogleSheetWriter(args['param1'], args['param2'], args['param3'])
execute_ecg_batch(batch, gsheet_writer)
def execute_ecg_batch(batch, gsheet_writer):
# Perform batch processing logic
# Use gsheet_writer for writing to Google Sheets
# Example:
# gsheet_writer.write_data(data)
pass
在此结构中:
lambda_handler
使用 gsheet_writer
中的参数创建 args
,并将其与 batch
一起传递到 execute_ecg_batch
。execute_ecg_batch
可以根据需要使用 gsheet_writer
将数据写入 Google 表格。此方法使您的代码保持井井有条,并确保仅在需要时使用来自
args
的必要参数创建 Google Sheets writer 对象。