from multiprocessing import Process, Manager from socket import SOL_SOCKET, SO_REUSEADDR, socket from aiohttp import web import logging logging.basicConfig(level=logging.DEBUG) from main3 import init_app import asyncio def serve_multiple(app,workers): sock = socket() sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) sock.bind(('0.0.0.0', 8080)) sock.set_inheritable(True) setattr(app,"shared",Manager().dict()) app.shared['counter'] = 0 processes = [] for i in range(workers): process = Process( target=web.run_app, name=f'worker-{i}', kwargs=dict(app=app, sock=sock) ) process.daemon = True process.start() processes.append(process) try: for process in processes: process.join() except KeyboardInterrupt: pass finally: for process in processes: process.terminate() sock.close() app = asyncio.run(init_app()) serve_multiple(app, 3)