并行请求处理python+;兰姆达

并行请求处理python+;兰姆达,python,api,aws-lambda,python-requests,Python,Api,Aws Lambda,Python Requests,我有一个大约800k ID的列表,对于每个ID,我应该向api发送一个请求,获取数据并插入到我的数据库中 当前流程是循环每个项目并等待数小时:/ 使用python+lambda执行此任务的智能方式是什么?您可以使用允许python中并行进程的并发.futures: 定义您的辅助功能: 导入时间 def工作人员(id): 打印(f“开始工作程序{id}”) 时间。睡眠(1) 打印(f“终端工作程序{id}”) 并行化: currs=ThreadPoolExecutor(max_workers=

我有一个大约800k ID的列表,对于每个ID,我应该向api发送一个请求,获取数据并插入到我的数据库中

当前流程是循环每个项目并等待数小时:/


使用python+lambda执行此任务的智能方式是什么?

您可以使用允许python中并行进程的并发.futures

定义您的辅助功能:

导入时间
def工作人员(id):
打印(f“开始工作程序{id}”)
时间。睡眠(1)
打印(f“终端工作程序{id}”)
并行化:

currs=ThreadPoolExecutor(max_workers=5)#如果您不希望函数的并行执行超过5次
对于范围(20)内的i:#假设您要提交20个请求
当前未来结果=当前提交(工人,i)
如果要执行api调用,可以执行以下操作:

导入请求
URL=[…]
def工作者(url):
requests.get(url)
currs=线程池执行器(最大工作线程数=5)
对于url中的url:
curr\u future\u result=currs.submit(工作者,url)

首选的方法是
多处理
并发.futures
高级构造。如果您使用原始
线程
,您需要自己管理作业队列(800k线程不是一个好主意)和错误管理等。我不是建议同时并行800k线程。将它们按10乘10的方式分组可以明显缩短数据库加载时间。是的,这正是那些更高级别的模块为您所做的。更新为futures:)Lambda如何考虑这一点?你在Lambda运行你的循环吗?是的。它是在aws lambda上运行的构建。因此,我正在寻找一个“智能”解决方案,使用aws lambda和python并行处理