2013-03-18 2 views
2

Я пытаюсь использовать архитектуру 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.

ответ

0

Я думаю, что метод, который вы ищете, - handle_accept, а не handle_accepted.

Смежные вопросы