socket ResourceWarning mit urllib in Python 3

Ich verwende urllib.request.urlopen (), um von einem Webdienst, den ich testen möchte, GET auszuführen.

Dies gibt ein HTTPResponse-Objekt zurück, das ich dann gelesen habe (), um den Antworttext zu erhalten.

Aber ich sehe immer eine ResourceWarning über einen nicht geschlossenen Socket von socket.py

Hier ist die relevante Funktion:

from urllib.request import Request, urlopen

def get_from_webservice(url):
    """ GET from the webservice  """
    req = Request(url, method="GET", headers=HEADERS)
    with urlopen(req) as rsp:
        body = rsp.read().decode('utf-8')
        return json.loads(body)

Hier ist die Warnung, wie sie in der Programmausgabe erscheint:

$ ./test/test_webservices.py
/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/socket.py:359: ResourceWarning: unclosed <socket.socket object, fd=5, family=30, type=1, proto=6>
self._sock = None
.s
----------------------------------------------------------------------
Ran 2 tests in 0.010s

OK (skipped=1)

Wenn ich irgendetwas tun kann, um die HTTP-Antwort (oder die Anfrage?) Dazu zu bringen, ihren Socket sauber zu schließen, würde ich gerne wissen, dass dieser Code für meine Komponententests vorgesehen ist. Ich mag es nicht, Warnungen irgendwo zu ignorieren, aber besonders nicht dort.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage