{"id":"c11a1db9c2a60284","repo":"aio-libs/aiohttp","slug":"already-started","errorCode":null,"errorMessage":"Already started","messagePattern":"Already started","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"aiohttp/web_ws.py","lineNumber":402,"sourceCode":"        loop = self._loop\n        assert loop is not None\n        self._reader = WebSocketDataQueue(\n            request._protocol, DEFAULT_CHUNK_SIZE, loop=loop\n        )\n        parser = WebSocketReader(\n            self._reader,\n            self._max_msg_size,\n            compress=bool(self._compress),\n            decode_text=self._decode_text,\n        )\n        cb = None if self._heartbeat is None else self._on_data_received\n        request.protocol.set_parser(parser, data_received_cb=cb)\n        # disable HTTP keepalive for WebSocket\n        request.protocol.keep_alive(False)\n\n    def can_prepare(self, request: BaseRequest) -> WebSocketReady:\n        if self._writer is not None:\n            raise RuntimeError(\"Already started\")\n        try:\n            _, protocol, _, _ = self._handshake(request)\n        except HTTPException:\n            return WebSocketReady(False, None)\n        else:\n            return WebSocketReady(True, protocol)\n\n    @property\n    def prepared(self) -> bool:\n        return self._writer is not None\n\n    @property\n    def closed(self) -> bool:\n        return self._closed\n\n    @property\n    def close_code(self) -> int | None:\n        return self._close_code","sourceCodeStart":384,"sourceCodeEnd":420,"githubUrl":"https://github.com/aio-libs/aiohttp/blob/c0ef574e29109210e96e652771ae4e7b88615fa4/aiohttp/web_ws.py#L384-L420","documentation":"Error \"Already started\" thrown in aio-libs/aiohttp.","triggerScenarios":"Thrown at aiohttp/web_ws.py:402 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"c0ef574e29109210e96e652771ae4e7b88615fa4","analyzedAt":"2026-08-04T19:51:05.467Z","schemaVersion":2}