バッチメッセージをSQSに送信する次のコードがあります。 私の目標は1000 msg/sec
をループに入れてwhile true
にすることです。SQSに1000 msg /秒以上のスピードを達成する方法は?
ボトルネックがあります。私は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)
ボトルネックを見つけるためにベンチマークしましたか?実時間と比較して実行中にプログラム全体に必要なCPU時間を確認しましたか?要求とHTTPSオーバーヘッドに署名するには、かなりのCPU時間が必要です。 –