什么是快速在Python中插入大量SQS消息的最佳方式?

时间:2013-01-02 19:23:58

标签: python boto amazon-sqs

现在我有一个Python脚本,它使用Boto将大量消息插入SQS - 大约100,000到200,000。简单地遍历循环而不创建SQS消息大约需要3分钟。使用SQS消息时,速度非常慢。

提高速度的最佳方法是什么?我应该创建一个SQS连接池并对消息的插入进行处理吗?我应该对消息列表进行分片以插入和生成多个进程,每个进程都有自己的列表份额吗?

Boto用户的推荐经验是什么?

2 个答案:

答案 0 :(得分:4)

并发很重要,无论是通过线程还是多处理,还是gevent。随便挑选。另外,您使用的是send_message_batch吗?这允许您一次发送10条消息,也可以帮助很多。

答案 1 :(得分:3)

通过使用带有boto的eventlet,您可以尝试更多的并发性。看看这个SO答案:Fastest way to download 3 million objects from a S3 bucket。同样的策略也应该与SQS一起使用。

但是,您可能希望确保没有其他更愚蠢的问题。你是从EC2实例测试的吗?如果没有,您可能希望在与SQS端点相同的区域中旋转实例,并在那里进行测试以查看它是否只是您的网络速度慢。如果这没有帮助,那么也许尝试eventlet。