我正在尝试在AWS lambda中实现多线程。这是一个示例代码,定义了我尝试在lambda中执行的原始代码的格式。
import threading
import time
def this_will_await(arg,arg2):
print("Hello User")
print(arg,arg2)
def this_should_start_then_wait():
print("This starts")
timer = threading.Timer(3.0, this_will_await,["b","a"])
timer.start()
print("This should execute")
this_should_start_then_wait()
在我的本地计算机上,此代码运行正常。我收到的输出是:
This starts
This should execute
.
.
.
Hello User
('b', 'a')
那些3。表示它等待3秒以完成执行。
现在,当我在AWS lambda中执行相同的操作时。我只收到
This starts
This should execute
我认为它没有调用this_will_await()函数。
答案 0 :(得分:2)
您是否尝试过添加timer.join()
?您需要加入Timer线程,因为否则Lambda环境将在父线程完成时杀死该线程。
Lambda函数中的以下代码:
import threading
import time
def this_will_await(arg,arg2):
print("Hello User")
print(arg,arg2)
def this_should_start_then_wait():
print("This starts")
timer = threading.Timer(3.0, this_will_await,["b","a"])
timer.start()
timer.join()
print("This should execute")
this_should_start_then_wait()
def lambda_handler(event, context):
return this_should_start_then_wait()
产生此输出:
This starts
Hello User
b a
This should execute
答案 1 :(得分:0)
我不确定您是否可以在插入lambda时延迟。我也面临着同样的问题,并发现了the article "Parallel Processing in Python with AWS Lambda"。