Я изменяю некоторый код, чтобы он был совместим между Python 2 и Python 3, но в выводе модульного теста появилось предупреждение.
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/case.py:601:
    ResourceWarning: unclosed socket.socket fd=4,
    family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6,
    laddr=('1.1.2.3', 65087), raddr=('5.8.13.21', 8080)
 Небольшое исследование показало, что это также происходит из популярных библиотек, таких как запросы и boto3.
 Я мог проигнорировать предупреждение или отфильтровать его полностью. Если бы был мой сервис, я мог бы установить connection: close заголовок в моем ответе (ссылка).
 Вот пример, который демонстрирует предупреждение в Python 3.6.1:
app.py
import requests
class Service(object):
    def __init__(self):
        self.session = requests.Session()
    def get_info(self):
        uri = 'http://api.stackexchange.com/2.2/info?site=stackoverflow'
        response = self.session.get(uri)
        if response.status_code == 200:
            return response.json()
        else:
            response.raise_for_status()
    def __del__(self):
        self.session.close()
if __name__ == '__main__':
    service = Service()
    print(service.get_info())
 test.py
import unittest
class TestService(unittest.TestCase):
    def test_growing(self):
        import app
        service = app.Service()
        res = service.get_info()
        self.assertTrue(res['items'][0]['new_active_users'] > 1)
if __name__ == '__main__':
    unittest.main()
  Существует ли лучший/правильный способ управления сеансом, чтобы он был закрыт в явном виде и не полагался на __del__() для получения такого рода предупреждений.
Спасибо за любую помощь.