| 32 | |
| 33 | |
| 34 | class StartupCallbackServer(uvicorn.Server): |
| 35 | def __init__(self, config: uvicorn.Config, startup_callback: typing.Callable): |
| 36 | super().__init__(config) |
| 37 | self.startup_callback = startup_callback |
| 38 | |
| 39 | async def startup( |
| 40 | self, sockets: typing.Optional[list[socket.socket]] = None |
| 41 | ) -> None: |
| 42 | await super().startup() |
| 43 | self.startup_callback() |
| 44 | |
| 45 | |
| 46 | def _validate_form(env: Environment) -> FormDoc: |