[英]Set IAM role to run AWS CLI Python subprocess in AWS Lambda
[英]Cannot run a While Loop in AWS Python Lambda
import asyncio
from aiogram import Bot, Dispatcher, types
# Handlers
async def echo_hello(message: types.Message):
while True:
await message.reply("Hello!")
await asyncio.sleep(20)
# AWS Lambda funcs
async def register_handlers(dp: Dispatcher):
dp.register_message_handler(echo_hello, commands=['sayhello'])
async def process_event(event, dp: Dispatcher):
Bot.set_current(dp.bot)
update = types.Update.to_object(event)
await dp.process_update(update)
async def main(event):
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
await register_handlers(dp)
await process_event(event, dp)
return 'ok'
def lambda_handler(event, context):
return asyncio.get_event_loop().run_until_complete(main(event))
我似乎无法在 AWS Python Lambda 中让我的电报机器人循环 Hello 消息。 如果我不知道如何获得 lambda_handler function,我只是将其视为来自https://github.com/DavisDmitry/aiogram-aws-serverless-example的示例
编辑:NVM 函数的默认超时最多为 15 分钟,因此任何循环最多只能工作 15 分钟。
正如@luk2302 在上面的评论中提到的,事实上,Lambdas 只有最多 15 分钟的上限,可由用户在设置中自定义。
如果设置为 15 分钟,则任何循环都将在条件允许的情况下执行该时间量。 当我问这个问题时,我并不知道这个事实,默认情况下超时值设置为 5 秒,而我的代码让 while 循环休眠 20 秒。 因此我无法收到任何重复的消息。 一旦我将它设置为 2 分钟(例如),它会重复该消息大约 6 次,然后停止。
Lambda 函数几乎永远运行,但这些函数不适合执行过程可能较长(包括循环)的函数。 为此,可以使用 EC2 实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.