[:material-github: Github release](https://github.com/illagrenan/django-asgi-lifespan/releases/tag/v0.3.0)
Added
- Lifespan async context managers are now supported (inspired by [Lifespan events in FastAPI](https://fastapi.tiangolo.com/advanced/events/#lifespan>)). Global variables are no longer necessary for the state management; objects required throughout the application lifecycle are now held in the lifespan scope state. Further details can be found in [the ASGI spec](https://asgi.readthedocs.io/en/latest/specs/lifespan.html#scope). Previous signals (startup and shutdown) remain supported with no plans for their removal. The new, preferred method to manage state is via an async context manager.
- All major ASGI servers have been tested, [an overview of their support is in separate page](docs/asgi.md). It is worth mentioning that the gunicorn+uvicorn combo is now working without problems.
- Development: Add support for [pre-commit](https://pre-commit.com/).
Changed
- More tests.
- Better documentation.
Breaking changes :material-alert-box:
- Drop support for Django `>=4.0.0, <4.2.0` and `>=5.0.0, <5.0.3`. Supported versions include `^4.2 || ^5.0.3` (`^4.2` is LTS).
- If lifespan signals fail, two new events are sent to the ASGI server: `lifespan.startup.failed` and `lifespan.shutdown.failed`. This could stop servers, like uvicorn, from starting if a `lifespan.startup.failed` event happens. This update makes it easier to find and fix errors, as they are not hidden anymore.