import asyncio import gc # def connection_made(self, transport): # if self._reject_connection: # context = { # 'message': ('An open stream was garbage collected prior to ' # 'establishing network connection; ' # 'call "stream.close()" explicitly.') # } # if self._source_traceback: # context['source_traceback'] = self._source_traceback # self._loop.call_exception_handler(context) # transport.abort() # return # self._transport = transport # reader = self._stream_reader # if reader is not None: # reader.set_transport(transport) # self._over_ssl = transport.get_extra_info('sslcontext') is not None # if self._client_connected_cb is not None: # self._stream_writer = asyncio.StreamWriter(transport, self, # reader, # self._loop) # res = self._client_connected_cb(reader, # self._stream_writer) # if asyncio.coroutines.iscoroutine(res): # self._task = self._loop.create_task(res) # XXX: added reference # self._strong_reader = None # asyncio.StreamReaderProtocol.connection_made = connection_made async def client_connected_cb(reader, writer): remote_read, remote_write = await asyncio.open_connection("example.com", 443, ssl=True) await remote_read.read() async def cleanup(): while True: gc.collect() await asyncio.sleep(3) async def main(): server = await asyncio.start_server(client_connected_cb, "localhost", 8080) await asyncio.gather(server.serve_forever(), cleanup()) asyncio.run(main())