Document the lifespan event handler parameter (#1110)

Co-authored-by: Thomas Grainger <tagrain@gmail.com>
This commit is contained in:
Emil Melnikov 2021-07-15 18:13:43 +02:00 committed by GitHub
parent 537ab6afd1
commit 8a3e41a544
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 25 additions and 0 deletions

View File

@ -37,6 +37,31 @@ registered startup handlers have completed.
The shutdown handlers will run once all connections have been closed, and
any in-process background tasks have completed.
A single lifespan asynccontextmanager handler can be used instead of
separate startup and shutdown handlers:
```python
import contextlib
import anyio
from starlette.applications import Starlette
@contextlib.asynccontextmanager
async def lifespan(app):
async with some_async_resource():
yield
routes = [
...
]
app = Starlette(routes=routes, lifespan=lifespan)
```
Consider using [`anyio.create_task_group()`](https://anyio.readthedocs.io/en/stable/tasks.html)
for managing asynchronious tasks.
## Running event handlers in tests
You might want to explicitly call into your event handlers in any test setup