如何清除/关闭/重新使用使用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可以吗?