You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
🐣 Is your feature request related to a problem? Please describe.
There is no way to know when a file is sent if the file is required to be removed after consumed.
As the docs of FileResponse reads,
The actual body sending happens in overridden prepare().
I tried to call await file_resp.prepare() myself in a handler function just like what we are used to do with StreamResponse, and then the file is removed after leaving the handler.
An Exception was raised after leaving the handler since prepare() was called again here without checking if the response had already been prepared.
Although I can use a StreamResponse instead of a FileResponse to tackle this problem, doing the same thing as what FileResponse._sendfile_fallback() does. I think it's the responsibility of a FileResponse to send a file (though a file to be removed soon), also to avoid code duplication.
💡 Describe the solution you'd like
Just like what StreamResponse.prepare() does, I think the same check should also be implemented in FileResponse.prepare().
🐣 Is your feature request related to a problem? Please describe.
There is no way to know when a file is sent if the file is required to be removed after consumed.
As the docs of FileResponse reads,
I tried to call
await file_resp.prepare()
myself in a handler function just like what we are used to do with StreamResponse, and then the file is removed after leaving the handler.An Exception was raised after leaving the handler since
prepare()
was called again here without checking if the response had already been prepared.aiohttp/aiohttp/web_protocol.py
Line 461 in 0dbf937
Although I can use a StreamResponse instead of a FileResponse to tackle this problem, doing the same thing as what FileResponse._sendfile_fallback() does. I think it's the responsibility of a FileResponse to send a file (though a file to be removed soon), also to avoid code duplication.
💡 Describe the solution you'd like
Just like what
StreamResponse.prepare()
does, I think the same check should also be implemented inFileResponse.prepare()
.aiohttp/aiohttp/web_response.py
Lines 347 to 350 in 0dbf937
❓ Describe alternatives you've considered
Provide any way for developers to know a file is sent, maybe an
asyncio.Event
or a signal.I know there are tons of issues here, but I think it's an improvement for the library to be more comprehensive.
Thank you!
The text was updated successfully, but these errors were encountered: