Create a TCP socket connection
(self)
| 969 | return {"host": self.host, "port": self.port} |
| 970 | |
| 971 | async def _connect(self): |
| 972 | """Create a TCP socket connection""" |
| 973 | async with async_timeout(self.socket_connect_timeout): |
| 974 | reader, writer = await asyncio.open_connection( |
| 975 | **self._connection_arguments() |
| 976 | ) |
| 977 | self._reader = reader |
| 978 | self._writer = writer |
| 979 | sock = writer.transport.get_extra_info("socket") |
| 980 | if sock: |
| 981 | sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) |
| 982 | try: |
| 983 | # TCP_KEEPALIVE |
| 984 | if self.socket_keepalive: |
| 985 | sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) |
| 986 | for k, v in self.socket_keepalive_options.items(): |
| 987 | sock.setsockopt(socket.SOL_TCP, k, v) |
| 988 | |
| 989 | except (OSError, TypeError): |
| 990 | # `socket_keepalive_options` might contain invalid options |
| 991 | # causing an error. Do not leave the connection open. |
| 992 | writer.close() |
| 993 | raise |
| 994 | |
| 995 | def _host_error(self) -> str: |
| 996 | return f"{self.host}:{self.port}" |
nothing calls this directly
no test coverage detected