server.py
#!/usr/bin/python
import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer
import time
import os
import sys
server = SimpleXMLRPCServer(('localhost', 9000))
def fib(n):
server = xmlrpclib.ServerProxy('http://localhost:9000')
if n == 0:
return 0
elif n == 1:
return 1
return server.fib(n-1) + server.fib(n-2)
server.register_function(fib)
server.serve_forever()
n > 1でcallすると戻ってこない。fibを呼んでいる間にfibを呼び出せないから。
「帰り」のサーバを用意して、戻ってきたらos依存な方法で通知するの?なんだかなぁ・・・。
今思いつく解決策:
- ConcurrentなXMLRPCServerを持ってくるか、もしくは実装する。呼び出し側はその関数でBlockする・・・HTTPがTimeoutしねーか?
- 帰りのサーバを用意してfolkで生じた子プロセスからXMLRPCで呼び出してもらう。帰りのサーバから呼び出しもとのプロセスに通知する必要がある。
signal @ codezine。しかしsignal moduleの中にsignalを発生させる関数が見当たらんが・・・?!?
0 件のコメント:
コメントを投稿