【问题标题】:What's the best way to insert a huge number of SQS messages in Python quickly?在 Python 中快速插入大量 SQS 消息的最佳方法是什么?
【发布时间】:2013-01-03 05:41:59
【问题描述】:

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

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

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

【问题讨论】:

  • @Downvoter 请说明被否决的原因,以便 OP 改进问题。

标签: python boto amazon-sqs


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 谢谢。仅在一点点并发之后,直接线程的收益就相当递减。它来自一个 EC2 实例。
    猜你喜欢
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 2018-10-24
    相关资源
    最近更新 更多