(self)
| 323 | self.transport.write(output) |
| 324 | |
| 325 | async def run_asgi(self) -> None: |
| 326 | try: |
| 327 | result = await self.app(self.scope, self.receive, self.send) # type: ignore[func-returns-value] |
| 328 | except ClientDisconnected: |
| 329 | pass # pragma: full coverage |
| 330 | except BaseException: |
| 331 | self.logger.exception("Exception in ASGI application\n") |
| 332 | self.send_500_response() |
| 333 | else: |
| 334 | if not self.handshake_complete: |
| 335 | self.logger.error("ASGI callable returned without completing handshake.") |
| 336 | self.send_500_response() |
| 337 | elif result is not None: |
| 338 | self.logger.error("ASGI callable should return None, but returned '%s'.", result) |
| 339 | self.transport.close() |
| 340 | |
| 341 | async def send(self, message: ASGISendEvent) -> None: |
| 342 | await self.writable.wait() |
no test coverage detected