2015-11-01 4 views
6

पाइथन में botocore लाइब्रेरी के साथ AWS-EC2 के आसपास कुछ स्वचालन करने के दौरान, मैंने देखा कि बहुत सारे HTTPS कनेक्शन स्थापित किए गए हैं जिन्हें अब व्यस्त करने वाली प्रक्रियाओं की आवश्यकता नहीं थी अन्य चीजें (इसलिए उन्हें मारना या बाहर निकलने के लिए उन्हें रिकोड करना एक विकल्प नहीं है)। मुझे लगता है कि botocore सत्र और/या क्लाइंट ऑब्जेक्ट स्थापित एडब्ल्यूएस एंडपॉइंट्स से कनेक्शन छोड़ रहा है। botocore दस्तावेज़ीकरण दिखाता है कि उन्हें कैसे शुरू या बनाना है, लेकिन उन्हें बंद करने या चीजों को साफ करने के तरीके के बारे में बताता है। मैंने .close विधि की कोशिश की लेकिन यह अस्तित्व में नहीं था। प्रक्रियाओं को मारने के बिना मैं इन कनेक्शन को गहन रूप से बंद करने के लिए कैसे प्राप्त कर सकता हूं?बॉटोकोर: सत्र या क्लाइंट को बंद या साफ़ करने के लिए

उत्तर

2

मैं एक ही मुद्दा था, लेकिन एक अलग कोण से: जब कार्यकर्ता धागे को बंद करने, मेरी लॉग फ़ाइलों को अव्यवस्थित इन चेतावनियों के साथ मिलेगा - कनेक्शन खोलने की वजह से भी:

अपवाद में नजरअंदाज: < ssl.SSLSocket fd = 4, family = addressFamily.AF_INET, टाइप = 2049, प्रोटो = 6, laddr = ('[internal ip]', 49266), raddr = ('[बाहरी ip]', 443) >

संसाधन चेतावनी: अनजान < ssl.SSLSocket fd = 4, family = addressFamily.AF_INET, प्रकार = 2049, प्रोटो = 6, laddr = ('[आंतरिक आईपी]', 49266), raddr = ('[बाहरी आईपी] ', 443) >

खरगोश की मांद नीचे कुछ समय के बाद, मैं पता लगा है सही ढंग से कनेक्शन बंद करने के लिए कैसे, धागे बंद करने से पहले।

मैं boto3 के साथ एसक्यूएस का उपयोग कर रहा हूं, इसलिए आपको बॉटोकोर के साथ काम करने के लिए कॉल को थोड़ा सा संशोधित करने की आवश्यकता हो सकती है।

मेरे उदाहरण के लिए ऊपर चेतावनी का उत्पादन होता है: का उपयोग कर

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 
संबंधित मुद्दे