From 25157471c805dcfb7bf53b8ac216ac56e1425489 Mon Sep 17 00:00:00 2001 From: Jeff Gordon Date: Tue, 20 Aug 2019 12:03:41 -0600 Subject: [PATCH] Added file object to '_closable_objects' to close at end of request This commit fixes ResourceWarnings in Python 3 where file objects do not appear to be closed at the end of the request, and the Django server will emit ResourceWarnings about unclosed files. The `_closable_objects` list is managed by the base FileResponse class in Django and will call `.close()` on objects at the end of the request. --- ranged_fileresponse/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ranged_fileresponse/__init__.py b/ranged_fileresponse/__init__.py index bf3fec8..de8b2e2 100644 --- a/ranged_fileresponse/__init__.py +++ b/ranged_fileresponse/__init__.py @@ -107,6 +107,9 @@ def __init__(self, request, file, *args, **kwargs): """ self.ranged_file = RangedFileReader(file) super(RangedFileResponse, self).__init__(self.ranged_file, *args, **kwargs) + # Close file object at end of request + if hasattr(file, 'close') and hasattr(self, '_closable_objects'): + self._closable_objects.append(file) if 'HTTP_RANGE' in request.META: self.add_range_headers(request.META['HTTP_RANGE'])