特定のタスクを周期的に実行する必要があるxmlrpcサーバーで作業しています。私は xmlrpc サービスのコアとして twisted を使用していますが、ちょっとした問題が発生しています:
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
それぞれの結合がブロックされないように、これら 2 つのプロセスに結合するにはどうすればよいですか?
(私は「結合」にかなり混乱しています。なぜそれがブロックされ、グーグルで検索しましたが、結合の使用法についてあまり役立つ説明が見つかりません。誰かが私にこれを説明できますか?)
よろしく