如何在Python 3中将asyncore与多处理IPC模块一起使用?

时间:2013-03-18 10:22:43

标签: python sockets event-handling multiprocessing asyncore

我正在尝试利用multiprocessing模块的客户端/服务器体系结构来促进我的Python脚本之间的通信。我希望能够使用asyncore在我的主事件循环之外实现单独的连接侦听器。我怎么能这样做?

虽然没有关于如何执行此操作的外部文档,但我尝试使用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

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找的方法是handle_accept,而不是handle_accepted。