私は、特定のタスクを周期的に実行する必要があるxmlrpcサーバで作業しています。私はXMLRPCサービスの中核として、ツイスト使用していますが、私は少し問題に実行しています:ツイストのリアクタを使用したPythonマルチプロセッシング
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つのプロセスへの参加については行くべき?
(私は「参加する」ことでかなり混乱しています。なぜ、それがブロックされると私はGoogleで検索しましたが、参加の使用に非常に有用な説明を見つけることができません。誰かが私にこれを説明することはできますか?)
よろしく
ああ、私は正確に必要なのです。 LoopingCallについてはどこで知りましたか?これは私がねじれているのを嫌う理由です。ドキュメントは、一方では十分ではなく、APIは非常に壮大で、重要なビットを見落とす傾向があります。 –
私はあなたが何を意味するのかを知っています - ツイストは学ぶのが難しいかもしれませんが、アイデアが得られれば素晴らしいです! O'Reillyの本はかなり古くなっていますが、とてもうまく説明できるので、Twistedを使ってもっとたくさんのことをするなら、そのコピーを入手することをお勧めします。 –
メーリングリストに登録することをお勧めします。あなたが教祖から十分な答えを読んだら、その一部は脳の浸透を止める*。 – DrBloodmoney