Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not process FileNotFoundError in FileResponse, resolves #979 #2856

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

toxadx
Copy link
Contributor

@toxadx toxadx commented Jan 29, 2025

FileNotFoundError can be processed in exception_handlers

Summary

Avoid handling FileNotFoundError in FileResponse.
This allows FileNotFoundError to be properly handled using exception_handlers, for example, by returning a 404 error when a file is not found.

Checklist

  • I understand that this PR may be closed in case there was no previous discussion. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.

Copy link
Member

@Kludex Kludex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you show me a real example of what you are trying to do?

The client asks for a file, and you use FileResponse? What about StaticFiles?

@@ -341,7 +341,7 @@ async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
stat_result = await anyio.to_thread.run_sync(os.stat, self.path)
self.set_stat_headers(stat_result)
except FileNotFoundError:
raise RuntimeError(f"File at path {self.path} does not exist.")
pass
else:
mode = stat_result.st_mode
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 lines below, we have another RuntimeError.

Also, this is a breaking change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants