# Server Side Code import asyncio import random import socket import ssl SERVER_ADDRESS = (HOST, PORT) = "127.0.0.1", 8881 async def producer(queue, client_connection, event_loop): while True: print("Waiting for sock_recv") await event_loop.sock_recv(client_connection, 26384) r = random.randint(1,101) print("Produced: %d" % r) await queue.put(r) await asyncio.sleep(0) async def consumer(queue): while True: print("Wating for queue.get()") r = await queue.get() await asyncio.sleep(2) print("Consumed: %d" % r) async def main(): listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) listen_socket.bind(SERVER_ADDRESS) listen_socket.listen(5) ssl_context = ssl.create_default_context(purpose=ssl.Purpose.CLIENT_AUTH) ssl_context.load_cert_chain(certfile="certificate.pem", keyfile="key.pem") client_connection, client_address = listen_socket.accept() client_connection = ssl_context.wrap_socket( client_connection, server_side=True ) client_connection.setblocking(False) queue = asyncio.Queue() t1 = asyncio.create_task(producer(queue, client_connection, asyncio.get_event_loop())) t2 = asyncio.create_task(consumer(queue)) await asyncio.wait([t1, t2]) event_loop = asyncio.get_event_loop() asyncio.run(main()) # Client Code import socket import ssl s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock = ssl.wrap_socket(s) sock.connect(("127.0.0.1", 8881)) sock.sendall(b"Hello World")