2015-11-01 5 views
6

Pythonでbotocoreライブラリを使用してAWS-EC2をいくつかの自動化を行っている間、私は多くのHTTPS接続が確立されたままになっていることに気付きました。他のもの(それを殺したり、終了するように記録することはオプションではありません)。私は、botocoreセッションおよび/またはクライアントオブジェクトが、確立されたAWSエンドポイントへの接続を離れると考えています。 botocoreのドキュメントには、それらを起動または作成する方法が示されていますが、ではなく、のクローズ方法やクリーンアップ方法が示されています。 .closeメソッドを試しましたが、存在しませんでした。 これらの接続を正常に終了させて​​プロセスを強制終了させるにはどうすればよいですか?botocore:セッションまたはクライアントをクローズまたはクリーンアップする方法

答えて

2

は、私は同じ問題を持っていましたが、わずかに異なる角度から:ワーカースレッドを閉じたときに、私のログファイルには、これらの警告でいっぱいになるだろう - また、接続をオープンする予定:で無視

例外:<をradsr =( '[external ip]'、443)>

(4)、ssl.SSLSocket fd = 4、family = AddressFamily.AF_INET、type = 2049、proto = 6、laddr =

ResourceWarning:未設定< ssl.SSLSocket fd = 4、family = AddressFamily.AF_INET、type = 2049、proto = 6、laddr =( '[内部IP]'、49266)、raddr =( '[外部ip] '、443)>

ウサギの穴をある程度の時間が経過した後、スレッドを閉じる前に接続を正しく閉じる方法を見つけました。

私はboto3でSQSを使用していますので、botocoreで動作するには、少し変更する必要があります。上記の警告を生成する

私の例である:

import boto3 
import boto3.session 
import warnings 

warnings.simplefilter('error', ResourceWarning) # Display warnings 
session = boto3.session.Session() 
sqs = session.resource('sqs', region_name=AWSregion) 
sqs_q = sqs.Queue(url=SQSQueueUrl) 
sqs_msg = sqs_q.receive_messages(MaxNumberOfMessages=1) 

SQS接続を使用して閉じることができる。

sqs.meta.client._endpoint.http_session.close() # closing a boto3 resource 
sqs._endpoint.http_session.close() # closing a boto3 client 
関連する問題