2008年2月19日火曜日

SimpleXMLRPCServer and fork

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
os._exit()の代わりにsys.exitでも一応動くが、子プロセス側でコネクションが腐るのでエラーメッセージがstderrに吐き出される。

os._exit fork xmlrpc @ google codeをみると当たり前。しかし、google webだと何もかからない。なにか壁があるらしい。

対処したい問題の解決にはなる(blockingなpopen2を使って処理をしたいのだが、それを引き起こすxmlrpc callはすぐに帰って次の要求を受け付けてほしい)のだが、最初の意図は2が先に帰ってきて、次に10が帰ってくることなのでそういう意味では解決になっていない。要は結果とそのタイミングを安易に取得したいのだが、callbackを設定しないと無理っぽい。


#!/usr/bin/python

import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer
import time
import os

server = SimpleXMLRPCServer(('localhost', 9000))

def sleep(n):
if os.fork() == 0:
time.sleep(n)
os._exit(0)
else:
return n

server.register_function(sleep)
server.serve_forever()

0 件のコメント: