現在我有一個Python腳本,它使用Boto將大量消息插入到SQS中 - 大約100,000到200,000。只需循環遍歷循環而不創建SQS消息大約需要3分鐘。對於SQS消息,它非常慢。在Python中快速插入大量SQS消息的最佳方式是什麼?
加快速度的最佳方法是什麼?我應該創建一個SQS連接池併線程插入消息嗎?我應該分割消息的列表來插入併產生多個進程,每個進程都有自己的共享列表?
經驗豐富的博託用戶推薦什麼?
現在我有一個Python腳本,它使用Boto將大量消息插入到SQS中 - 大約100,000到200,000。只需循環遍歷循環而不創建SQS消息大約需要3分鐘。對於SQS消息,它非常慢。在Python中快速插入大量SQS消息的最佳方式是什麼?
加快速度的最佳方法是什麼?我應該創建一個SQS連接池併線程插入消息嗎?我應該分割消息的列表來插入併產生多個進程,每個進程都有自己的共享列表?
經驗豐富的博託用戶推薦什麼?
你可以嘗試更多的併發性,通過與boto使用eventlet。看看這個SO回答:Fastest way to download 3 million objects from a S3 bucket。同樣的戰略也應該與SQS合作。
但是,您可能想要確保沒有其他更加困難的問題。你是從EC2實例測試這個嗎?如果不是,您可能希望在與SQS端點相同的區域內旋轉一個實例,並在那裏測試,看看它是否只是您的網絡很慢。如果這沒有幫助,那麼也許嘗試一下eventlet。
謝謝。直線上線程只有一點點的併發之後纔有相當的回報。它來自EC2實例。 –
併發很重要,無論是通過線程還是多處理或gevent。拿你的選擇。另外,您是否使用send_message_batch
?這允許您一次發送10條消息,同時也有很大幫助。
@Downvoter請解釋downvote的原因,以便OP可以改善問題。 – zengr