Работа с UDP в несколько процессов
Для начала код - отлично выбирает пакеты из сокета:
def udp_process(protocol_factory, sock):
loop = asyncio.new_event_loop()
transport, protocol = loop.run_until_complete(
loop.create_datagram_endpoint(protocol_factory, sock=sock)
)
loop.run_forever()
transport.close()
loop.close()
def udp_process_pool(protocol_factory, port, n=4):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('', port))
processes = [ multiprocessing.Process(target=udp_process, args=(protocol_factory, sock), name=f"udp {port} #{i}") for i in range(n) ]
return processes
Но нужно к нему реализовать сессии с TLS.
Пока лучшее что придумал - пересылать в SOCK_STREAM в другой процесс и там уже хранить SSL объект.