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 The shutdown handlers will run once all connections have been closed, and
any in-process background tasks have completed. 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 ## Running event handlers in tests
You might want to explicitly call into your event handlers in any test setup You might want to explicitly call into your event handlers in any test setup