下面的代码向SQS发送批处理消息。
我的目标是在循环中发送1000 msg/sec
我有一个瓶颈-从csv文件中随机选择id。如何改进算法以实现目标?

async def send_to_sqs(file_path, loop):
    ids = load_file_to_list(file_path)
    while True:
        messages = []
        for id in ids:
            message = {'Id': id}
            messages.append(message)

        for i in range(0, 10000, 10): #butch size is 10
            messages_batch = messages[i:i+10]

            entries = []
            for message in messages_batch:
                entries.append({'Id': str(message['Id']),
                'MessageBody': json.dumps(message)})
            await sqs.send_message_batch(QueueUrl=sqs_url, Entries=entries)


def load_file_to_list(file_path):
   with open(file_path, 'r') as f:
     reader = csv.reader(f)
     return list(reader)

最佳答案

你为什么不使用uuid?这比预先创建的文件中的随机id更可能是唯一的
为了更直接地解决您的代码,而不是后退一步,我会考虑在后台将文件作为持久文件打开,而不是每次调用函数时都打开它。

关于python - 如何达到SQS超过1000 msg/sec的速度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44907225/

10-11 06:49
查看更多