All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
:material-github: Github release
- Add support for Python 3.13.
:material-github: Github release
- Add support for Django 5.1.
- Test examples using Pyright.
- Fix and improve typehints. Use
AbstractAsyncContextManager
type for lifespan manager function (this should fix Pyright errors as reported in the issue 99).
:material-github: Github release
AsyncMiddleware
is now calledLifespanStateMiddleware
, the original name was too generic (it was a copy-paste from the Django documentation). The original name will remain as an alias forLifespanStateMiddleware
, so existing installations should not be affected.
:material-github: Github release
- Lifespan async context managers are now supported (inspired by Lifespan events in FastAPI). 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. 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. It is worth mentioning that the gunicorn+uvicorn combo is now working without problems.
- Development: Add support for pre-commit.
- More tests.
- Better documentation.
- 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
andlifespan.shutdown.failed
. This could stop servers, like uvicorn, from starting if alifespan.startup.failed
event happens. This update makes it easier to find and fix errors, as they are not hidden anymore.
:material-github: Github release
- Support for Django 5. 🎉
Support for Django 5 has proven problematic due to this bug: https://code.djangoproject.com/ticket/35174. As soon as a new version of Django is released with a fix, a new version of this plugin will be released. At the moment, this plugin includes the Signal handler from here: django/django#17837. - Support for Python 3.12.
:material-github: Github release
- Initial release.