在自由层中,您能同时从并行或异步函数编写dynamodb吗?

2024-04-25 01:17:56 发布

您现在位置:Python中文网/ 问答频道 /正文

没有并行函数的执行:时间=x

使用4个并行函数执行:时间=x/4

当执行附加有4个并行函数的代码时,总时间不除以4,而是保持不变。你知道吗

我的问题是: Dynamodb支持并行函数表写入吗?你知道吗

def patronfanin_out(event, context):
    for i in range(4):
        x= list #aqui envio una lista nueva para cada función
        response = lambda_client.invoke(
        FunctionName="tesis-aws-patrones-dev-workers",
        InvocationType='Event',
        Payload=json.dumps(x)
      )

def workers(event, context):
  table = boto3.resource('dynamodb').Table('patron2')
  rowsFinal = event['list']
  for row in rowsFinal:
    table.put_item(Item={
        'id': str(uuid.uuid4()),
        'serie': row[0],
        'rank': row[1],
        'discipline': row[2],
        'sex': row[3],
        'salary': row[4]
        })
  response = {
      "statusCode": 200,
      "params" : rowsFinal
  }
  return response

我希望函数的总执行时间将大大减少,因为我使用4个并行函数。 总执行时间:x 总执行时间:x/4


Tags: 函数代码ineventforresponsedefcontext
1条回答
网友
1楼 · 发布于 2024-04-25 01:17:56
  for row in rowsFinal:
    table.put_item(Item={
        'id': str(uuid.uuid4()),
        'serie': row[0],
        'rank': row[1],
        'discipline': row[2],
        'sex': row[3],
        'salary': row[4]
        })

这似乎不是并行运行的,而是以迭代的方式运行的

编辑

调用https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html#Lambda.Client.invoke中所述的是同步的,它等待响应。你知道吗

使用调用异步https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html#Lambda.Client.invoke_async,它们将并行运行。你知道吗

编辑2

使用batch_write_item()代替table.put_item

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB.Client.batch_write_item

并按最多25个项目或16MB总计https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html对它们进行分组

相关问题 更多 >