使用twisted的Python多处理

2024-04-23 19:32:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个xmlrpc服务器上工作,它必须周期性地执行某些任务。我使用twisted作为xmlrpc服务的核心,但遇到了一个小问题:

class cemeteryRPC(xmlrpc.XMLRPC):

    def __init__(self, dic):
        xmlrpc.XMLRPC.__init__(self)


    def xmlrpc_foo(self):
        return 1


    def cycle(self):
        print "Hello"
        time.sleep(3)


class cemeteryM( base ):

    def __init__(self, dic):   # dic is for cemetery
        multiprocessing.Process.__init__(self)
        self.cemRPC = cemeteryRPC()


    def run(self):
        # Start reactor on a second process
        reactor.listenTCP( c.PORT_XMLRPC, server.Site( self.cemRPC ) )
        p = multiprocessing.Process( target=reactor.run )
        p.start()

        while not self.exit.is_set():
            self.cemRPC.cycle()
            #p.join()


if __name__ == "__main__":

    import errno
    test = cemeteryM()
    test.start()

    # trying new method
    notintr = False
    while not notintr:
        try:
            test.join()
            notintr = True 
        except OSError, ose:
            if ose.errno != errno.EINTR:
                raise ose
        except keyboardInterrupt:
            notintr = True

我应该如何连接这两个进程,以便它们各自的连接不被阻塞?

(我被“加入”搞糊涂了。)。为什么它会被屏蔽,我在google上搜索了一下,但找不到对join用法有用的解释。有人能给我解释一下吗?)

问候


Tags: testselfinitdefclassreactorjoinxmlrpc