[4.2.x] Fixed #34428 -- Made ASGIStaticFilesHandler adapt response to async iterator.

Bug in 0bd2c0c901.
Backport of 02c356f2f3 from main
This commit is contained in:
Carlton Gibson 2023-03-21 20:51:53 +01:00 committed by Mariusz Felisiak
parent e829b0a239
commit ae824eceb1
2 changed files with 9 additions and 1 deletions

View File

@ -103,4 +103,13 @@ class ASGIStaticFilesHandler(StaticFilesHandlerMixin, ASGIHandler):
async def get_response_async(self, request):
response = await super().get_response_async(request)
response._resource_closers.append(request.close)
# FileResponse is not async compatible.
if response.streaming and not response.is_async:
_iterator = response.streaming_content
async def awrapper():
for part in await sync_to_async(list)(_iterator):
yield part
response.streaming_content = awrapper()
return response

View File

@ -116,7 +116,6 @@ class ASGITest(SimpleTestCase):
"django.contrib.staticfiles.finders.FileSystemFinder",
],
)
@ignore_warnings(module="django.http.response")
async def test_static_file_response(self):
application = ASGIStaticFilesHandler(get_asgi_application())
# Construct HTTP request.