XMLRPC サーバーからクライアントに任意の例外を渡そうとしています (両方の Python スクリプト、例外の種類は両側で定義されています)。ActiveState Recipesには、返された「faultString」を解析し、それを既知の例外のリストと比較し、見つかった場合はその例外を発生させる ( でラップする代わりに)クライアント側の実装の例がありますxmlrpclib.Fault
。
XMLRPC 例外応答の例:
<?xml version='1.0'?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>faultString</name>
<value>
<string>ValueError:</string>
</value>
</member>
</struct>
</value>
</fault>
</methodResponse>
ActiveState レシピは、「ValueError:」文字列を分割し、「ValueError」をValueError.__name__
(allowed_errors = [ValueError, TypeError]
上のリンクを参照) と比較します。
このようなすべての例外を渡すことは可能ですか。つまりException
、(サーバーで発生した後) クライアント側で例外 (または他の基本クラスから派生) を自動的に発生させますか?
ActiveState スクリプトは機能しますが、スローされる可能性のあるすべての例外を登録したくはありません( にある必要がありますallowed_errors
)。
(おまけの質問: この問題を適切に処理できる XMLRPC 以外のテクノロジはありますか? Pyro はありますか?)