3

現在、Botoを使用してSQSに多数のメッセージ(約100,000〜200,000)を挿入するPythonスクリプトがあります。SQSメッセージを作成せずにループを繰り返すだけで約3分かかります。SQSメッセージでは、非常に遅くなります。

これをスピードアップするための最良の方法は何ですか?SQS接続のプールを作成し、メッセージの挿入をスレッド化する必要がありますか?メッセージのリストをシャーディングして、それぞれがリストの独自の共有を持つ複数のプロセスを挿入および生成する必要がありますか?

経験豊富なBotoユーザーは何をお勧めしますか?

4

2 に答える 2

4

並行性は、スレッド、マルチプロセッシング、またはgeventのいずれかを介して重要です。好きなものを選んでください。また、使用していsend_message_batchますか?これにより、一度に10個のメッセージを送信でき、非常に役立ちます。

于 2013-01-02T21:41:59.890 に答える
3

botoでeventletを使用することにより、より多くの並行性を試すことができます。このSOの答えを見てください:S3バケットから300万個のオブジェクトをダウンロードする最速の方法。同じ戦略がSQSでも機能するはずです。

ただし、他に愚かな問題がないことを確認する必要があります。これをEC2インスタンスからテストしていますか?そうでない場合は、SQSエンドポイントと同じリージョンでインスタンスをスピンアップし、そこでテストして、低速なのがネットワークだけであるかどうかを確認することをお勧めします。それでも問題が解決しない場合は、eventletを試してみてください。

于 2013-01-02T19:43:05.733 に答える