Я пытаюсь использовать архитектуру Client/Server модуля multiprocessing
для облегчения связи между моими сценариями Python. Я хочу иметь возможность реализовать отдельный прослушиватель соединений, кроме моего основного цикла событий, используя asyncore
. Как я могу это сделать?Как использовать asyncore с многопроцессорным IPC-модулем в Python 3?
Хотя нет никакой внешней документации о том, как сделать это, я пытался построить базовую asyncore.dispatcher
с использованием сокета слушателя от multiprocessing.Listener
:
import asyncore
import socket
from multiprocessing.connection import Listener, Client
class ConnectionListener(asyncore.dispatcher):
def __init__(self, ln):
asyncore.dispatcher.__init__(self)
self.set_socket(ln._listener._socket)
def handle_accepted(self, sock, addr):
print("Accepted a client!")
if __name__ == "__main__":
address = ('localhost', 19378)
try:
ln = Listener(address)
x = ConnectionListener(ln)
while True:
asyncore.loop()
except socket.error:
c = Client(address)
print("Client is trying to connect")
Пока сервер делает петлю, он никогда не срабатывает handle_accepted
.