我有以下代码将批处理消息发送到SQS。
我的目标是在while true
循环中发送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)
在开始while循环之前,我会尝试从内存中的CSV文件中收集所有可能的随机id。这样循环就不必打开文件并获取随机数。然后可以编写一个函数,从内存中保存的随机数列表中选择一个随机数。这会使事情加速很多。你知道吗
为什么不使用uuid?这比预先创建的文件中的随机ID更可能是唯一的
为了更直接地解决您的代码,而不必后退一步,我会考虑将文件作为持久性文件在后台打开,而不是每次调用函数时都打开它。你知道吗
相关问题 更多 >
编程相关推荐