【发布时间】:2019-09-17 03:48:46
【问题描述】:
我有 50 个 lambda 函数。现在我编写了一个脚本,每 15 分钟调用一次这 50 个函数,如下所示:
import boto3
import pickle
def Handler(event, context):
#read exams functions from pickle
with open('result.pickle', 'rb') as file:
all_functions = pickle.load(file)
functions = all_functions['func']
print('check functions')
for items in functions:
if 'FromDB' in items:
print(items)
lambda_client = boto3.client('lambda')
response = lambda_client.invoke(FunctionName = items, InvocationType = 'Event')
print(response)
else:
continue
我创建了一个部署包,其中包含 boto3 包和 pickle 文件。当我在 lambda 管理控制台中执行此操作时,我注意到两件事:
check functions在日志中打印两次,尽管只有一次打印日志显示执行的 1 个或 2 个函数。它不会打印所有函数,这意味着这些函数永远不会被调用。
然而,这个脚本在 24 秒内在我的本地机器上运行,并且所有功能都完美执行。有人可以帮我在 AWS 上运行这个脚本吗?
我的泡菜文件:
with open('result.pickle', 'rb') as file:
all_functions = pickle.load(file)
functions = all_functions['func']
print(functions)
{'myfunc_1', 'myfunc_2', 'myfunc_3', 'myfunc_4', 'myfunc_5'}
以上是要调用的 aws lambda 函数本身
【问题讨论】:
-
您的 pickle 文件可能包含 lambda 函数本身。如果是这种情况,它可能会成为重复调用的牺牲品,因此永远不会真正正确终止。最终,AWS 可能会负责终止它。如果以上不是问题,发布您的泡菜文件的内容会更有帮助
-
“你的 pickle 文件可能包含 lambda 函数本身”——这是什么意思?
标签: amazon-web-services aws-lambda boto3