如何清除/關閉/重新使用使用boto
連接到S3存儲桶的套接字?使用boto從S3中獲取時TCP套接字未關閉
This discussion從2010年說這是一個問題httplib.HTTPSConnection
而不是boto
。在我的代碼中,我使用key.close(fast=True)
來獲得從boto.s3.bucket.Bucket.list()
獲得的所有密鑰。每次我使用一個密鑰來引用文件,博託打開一個獨特的插座,過了一段時間,我會得到[Errno 24]: Too many open files
。
當我運行lsof | grep python
我得到這些不同的:
python 10573 ec2-user 399u IPv4 59221 0t0 TCP ip-10-0-0-113.ec2.internal:59293->s3-1-w.amazonaws.com:https (CLOSE_WAIT)
python 10573 ec2-user 72u IPv4 60910 0t0 TCP ip-10-0-0-113.ec2.internal:37952->s3-1-w.amazonaws.com:https (ESTABLISHED)
python 10573 ec2-user 91u sock 0,6 0t0 61105 can't identify protocol
這些連接類型(IPv4的插座,插座),TCP節點和名稱(最後一欄)是本地主機:端口 - > TCP遠程地址(TCP/TPI的狀態)。
ulimit -a
表示打開的文件最大爲1024,而一個選項只是提高最大值。但是,我想確保我正在關閉我應該是的文件。
我認爲製作和重複使用1個插座更聰明,boto可以嗎?