【以下的问题经过翻译处理】 我正在构建一个无服务器的网页爬虫,其中有一个Lambda函数,逐个将n个URL(n>>m)从m个网站中加入到消息队列中。然后,我有一个SQS触发器,它调用另一个Lambda函数,该函数获取URL并进行网页抓取。
我将SQS触发器的批处理大小设置为1,并限制了Lambda的并发调用数为1。问题是,我想在每次抓取之间有20-40秒的暂停,但目前没有暂停而且只执行函数(大约需要10秒)。
有什么办法可以做到这一点,还是说我必须重新考虑当前的架构?
更新:问题在于,将消息添加延迟并不能解决我的问题。当我使用延迟时,每条消息出队需要x秒。但由于每隔3秒就会添加一条新消息,所以出队操作只会在20秒后执行,而不是在初始入队后的20、40、60、80、100秒执行。
解决方案:我采用了一种修改后的方法。现在,我有一个定时事件,每分钟触发一次Lambda。然后,Lambda从队列中获取消息。修改的部分是,当队列为空时,禁用了定时作业。如果添加了元素,它会再次启用。