An open API service indexing awesome lists of open source software.

https://github.com/barabum0/starlette-ras-handle

This library patches starlette, so you can handle "RuntimeError: Caught handled exception, but response already started." exception
https://github.com/barabum0/starlette-ras-handle

fastapi patch python starlette

Last synced: 4 months ago
JSON representation

This library patches starlette, so you can handle "RuntimeError: Caught handled exception, but response already started." exception

Awesome Lists containing this project

README

          

# Starlette RAS-handler

[![Supported Python versions](https://img.shields.io/pypi/pyversions/starlette-ras-handle.svg?logo=python&logoColor=FFE873)](https://pypi.org/project/starlette-ras-handle)
[![PyPI version](https://img.shields.io/pypi/v/starlette-ras-handle.svg?logo=pypi&logoColor=FFE873)](https://pypi.org/project/starlette-ras-handle)
[![PyPI downloads](https://img.shields.io/pypi/dm/starlette-ras-handle.svg)](https://pypi.org/project/starlette-ras-handle)

This library adds the ability to handle `RuntimeError: Caught handled exception, but response already started.` error, so you can silent it, or do whatever you want

## Installation 📥

```shell
python -m pip install -U starlette-ras-handle
```

## Usage 🛠️
1. Define an async function that accepts `(Exception, Request | WebSocket)` and returns `None`
```python
async def print_handler(exc: Exception, request: Request | WebSocket) -> None:
print("Caught", exc)
```

2. Patch!
```python
from handler import print_handler

from starlette_ras_handle import handle_starlette_ras
handle_starlette_ras(print_handler)

# other imports...
```

**IMPORTANT:** If you want the patch to work properly, you should use it before you import anything, related to `starlette` (e.g. `FastAPI`)

You can check an example in `/examples/example.py`

## Troubleshooting 🚨

If you encounter issues or have queries, feel free to check our [Issues section](https://github.com/barabum0/starlette-ras-handle/issues) on GitHub.

## Contribution 🤝

Contributions are welcome. Please fork the repository, make your changes, and submit a pull request.