https://github.com/alvarobartt/uvicorn-context-manager
🚀 Context Manager to run `uvicorn` ASGI applications
https://github.com/alvarobartt/uvicorn-context-manager
asgi-server context-manager uvicorn
Last synced: 10 months ago
JSON representation
🚀 Context Manager to run `uvicorn` ASGI applications
- Host: GitHub
- URL: https://github.com/alvarobartt/uvicorn-context-manager
- Owner: alvarobartt
- License: mit
- Created: 2023-02-11T20:53:16.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-02-19T19:14:26.000Z (over 3 years ago)
- Last Synced: 2025-03-22T20:27:58.461Z (about 1 year ago)
- Topics: asgi-server, context-manager, uvicorn
- Language: Python
- Homepage: https://alvarobartt.github.io/uvicorn-context-manager/
- Size: 517 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# 🚀 Context Manager to run `uvicorn` ASGI applications
`uvicorn_context_manager` is a Python package that exposes a class named
`UvicornContextManager` that inherits from `uvicorn.Server` and
contains a Python context manager to deploy an ASGI application inside a context
and then gracefully shut it down.
The motivation was to provide a way to easily deploy an ASGI application
when running tests or wanting to interact temporarily with ASGI applications.
This could have been a GitHub Gist or just a code snippet, but I think that
this can be useful for many `uvicorn` users, and it just contains the `uvicorn`
dependency so there's no overhead.
## ⚒️ Installation
Python greater than 3.7 and lower than 3.11
```bash
pip install uvicorn_context_manager
```
Or install it in development mode as:
```bash
pip install -e .
```
## 👨🏻💻 Usage
### ⚡️ With `fastapi`
As mentioned before, the context manager as `uvicorn`, lets you deploy any
ASGI application. Since `fastapi` is one of the most used Python frameworks for
web development according to a JetBrains survey, see https://twitter.com/tiangolo/status/1624002347776065538.
So on, we think it's useful to showcase how to use `uvicorn_context_manager` with
`fastapi`.
```bash
pip install fastapi
```
Once installed, you can deploy your ASGI application in a Python context manager as:
```python
from fastapi import FastAPI
from uvicorn_context_manager import UvicornContextManager
api = FastAPI()
with UvicornContextManager(api) as server:
...
```
## 🥇 Credits
Credits go to [@florimondmanca](https://github.com/florimondmanca) due to the
solution provided at [encode/uvicorn#1103](https://github.com/encode/uvicorn/discussions/1103#discussioncomment-941726),
as the motivation to create this package was based on that code snippet.