3

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

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

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

4

2 回答 2

4

并发性很重要,无论是通过线程还是多处理,还是通过 gevent。任你选。还有,你在用send_message_batch吗?这使您可以一次发送 10 条消息,并且也很有帮助。

于 2013-01-02T21:41:59.890 回答
3

您可以通过使用带有 boto 的 eventlet 来尝试更多的并发性。看看这个 SO 答案:Fastest way to download 300 万个对象 from a S3 bucket。同样的策略也适用于 SQS。

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

于 2013-01-02T19:43:05.733 回答