<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Hi all,<br>
I'm newbie. I got a lot of problem using xmlrpc and numpy<br>
<br>
<div class="post-text" itemprop="description">
<p>I'm using numpy to to some staff and then serve the results via
a twisted/XMLRPC server. If the result is a numpy float 64, I
get an exception cause probably twisted can't handle this type.
Infact is I downgrade the result to float32 with x=float(x),
everything is ok.
This is not so good cause if I forget this workaroud somewhere,
it's a pain. Have you any better solution?</p>
<p>server:</p>
<pre style="" class="lang-py prettyprint prettyprinted"><code><span class="kwd">from</span><span class="pln"> twisted</span><span class="pun">.</span><span class="pln">web </span><span class="kwd">import</span><span class="pln"> xmlrpc</span><span class="pun">,</span><span class="pln"> server
</span><span class="kwd">import</span><span class="pln"> numpy </span><span class="kwd">as</span><span class="pln"> np
</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">MioServer</span><span class="pun">(</span><span class="pln">xmlrpc</span><span class="pun">.</span><span class="pln">XMLRPC</span><span class="pun">):</span><span class="pln">
</span><span class="str">"""
An example object to be published.
"""</span><span class="pln">
</span><span class="kwd">def</span><span class="pln"> xmlrpc_test_np</span><span class="pun">(</span><span class="pln">self</span><span class="pun">):</span><span class="pln">
</span><span class="kwd">return</span><span class="pln"> np</span><span class="pun">.</span><span class="pln">sqrt</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> __name__ </span><span class="pun">==</span><span class="pln"> </span><span class="str">'__main__'</span><span class="pun">:</span><span class="pln">
</span><span class="kwd">from</span><span class="pln"> twisted</span><span class="pun">.</span><span class="pln">internet </span><span class="kwd">import</span><span class="pln"> reactor
r </span><span class="pun">=</span><span class="pln"> </span><span class="typ">MioServer</span><span class="pun">()</span><span class="pln">
reactor</span><span class="pun">.</span><span class="pln">listenTCP</span><span class="pun">(</span><span class="lit">7080</span><span class="pun">,</span><span class="pln"> server</span><span class="pun">.</span><span class="typ">Site</span><span class="pun">(</span><span class="pln">r</span><span class="pun">))</span><span class="pln">
reactor</span><span class="pun">.</span><span class="pln">run</span><span class="pun">()</span></code></pre>
<p>client:</p>
<pre style="" class="lang-py prettyprint prettyprinted"><code><span class="kwd">import</span><span class="pln"> xmlrpclib
</span><span class="kwd">if</span><span class="pln"> __name__</span><span class="pun">==</span><span class="str">'__main__'</span><span class="pun">:</span><span class="pln">
x</span><span class="pun">=</span><span class="pln">xmlrpclib</span><span class="pun">.</span><span class="typ">ServerProxy</span><span class="pun">(</span><span class="str">'<a class="moz-txt-link-freetext" href="http://localhost:7080/">http://localhost:7080/</a>'</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">print</span><span class="pln"> x</span><span class="pun">.</span><span class="pln">test_np</span><span class="pun">()</span></code></pre>
<p>Exception:</p>
<pre style="" class="lang-py prettyprint prettyprinted"><code><span class="typ">Traceback</span><span class="pln"> </span><span class="pun">(</span><span class="pln">most recent call last</span><span class="pun">):</span><span class="pln">
</span><span class="typ">File</span><span class="pln"> </span><span class="str">"C:\Users\Stone\.eclipse\org.eclipse.platform_4.3.0_1709980481_win32_win32_x86\plugins\org.python.pydev_2.8.2.2013090511\pysrc\pydevd.py"</span><span class="pun">,</span><span class="pln"> line </span><span class="lit">1446</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> </span><span class="pun"><</span><span class="pln">module</span><span class="pun">></span><span class="pln">
debugger</span><span class="pun">.</span><span class="pln">run</span><span class="pun">(</span><span class="pln">setup</span><span class="pun">[</span><span class="str">'file'</span><span class="pun">],</span><span class="pln"> </span><span class="kwd">None</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">None</span><span class="pun">)</span><span class="pln">
</span><span class="typ">File</span><span class="pln"> </span><span class="str">"C:\Users\Stone\.eclipse\org.eclipse.platform_4.3.0_1709980481_win32_win32_x86\plugins\org.python.pydev_2.8.2.2013090511\pysrc\pydevd.py"</span><span class="pun">,</span><span class="pln"> line </span><span class="lit">1092</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> run
pydev_imports</span><span class="pun">.</span><span class="pln">execfile</span><span class="pun">(</span><span class="pln">file</span><span class="pun">,</span><span class="pln"> globals</span><span class="pun">,</span><span class="pln"> locals</span><span class="pun">)</span><span class="pln"> </span><span class="com">#execute the script</span><span class="pln">
</span><span class="typ">File</span><span class="pln"> </span><span class="str">"C:\Users\Stone\Documents\FastDose\src\Beagle\Prove e test\xmlrpc_client.py"</span><span class="pun">,</span><span class="pln"> line </span><span class="lit">28</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> </span><span class="pun"><</span><span class="pln">module</span><span class="pun">></span><span class="pln">
</span><span class="kwd">print</span><span class="pln"> x</span><span class="pun">.</span><span class="pln">test_np</span><span class="pun">()</span><span class="pln">
</span><span class="typ">File</span><span class="pln"> </span><span class="str">"C:\Python27\lib\xmlrpclib.py"</span><span class="pun">,</span><span class="pln"> line </span><span class="lit">1224</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> __call__
</span><span class="kwd">return</span><span class="pln"> self</span><span class="pun">.</span><span class="pln">__send</span><span class="pun">(</span><span class="pln">self</span><span class="pun">.</span><span class="pln">__name</span><span class="pun">,</span><span class="pln"> args</span><span class="pun">)</span><span class="pln">
</span><span class="typ">File</span><span class="pln"> </span><span class="str">"C:\Python27\lib\xmlrpclib.py"</span><span class="pun">,</span><span class="pln"> line </span><span class="lit">1578</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> __request
verbose</span><span class="pun">=</span><span class="pln">self</span><span class="pun">.</span><span class="pln">__verbose
</span><span class="typ">File</span><span class="pln"> </span><span class="str">"C:\Python27\lib\xmlrpclib.py"</span><span class="pun">,</span><span class="pln"> line </span><span class="lit">1264</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> request
</span><span class="kwd">return</span><span class="pln"> self</span><span class="pun">.</span><span class="pln">single_request</span><span class="pun">(</span><span class="pln">host</span><span class="pun">,</span><span class="pln"> handler</span><span class="pun">,</span><span class="pln"> request_body</span><span class="pun">,</span><span class="pln"> verbose</span><span class="pun">)</span><span class="pln">
</span><span class="typ">File</span><span class="pln"> </span><span class="str">"C:\Python27\lib\xmlrpclib.py"</span><span class="pun">,</span><span class="pln"> line </span><span class="lit">1297</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> single_request
</span><span class="kwd">return</span><span class="pln"> self</span><span class="pun">.</span><span class="pln">parse_response</span><span class="pun">(</span><span class="pln">response</span><span class="pun">)</span><span class="pln">
</span><span class="typ">File</span><span class="pln"> </span><span class="str">"C:\Python27\lib\xmlrpclib.py"</span><span class="pun">,</span><span class="pln"> line </span><span class="lit">1473</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> parse_response
</span><span class="kwd">return</span><span class="pln"> u</span><span class="pun">.</span><span class="pln">close</span><span class="pun">()</span><span class="pln">
</span><span class="typ">File</span><span class="pln"> </span><span class="str">"C:\Python27\lib\xmlrpclib.py"</span><span class="pun">,</span><span class="pln"> line </span><span class="lit">793</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> close
</span><span class="kwd">raise</span><span class="pln"> </span><span class="typ">Fault</span><span class="pun">(**</span><span class="pln">self</span><span class="pun">.</span><span class="pln">_stack</span><span class="pun">[</span><span class="lit">0</span><span class="pun">])</span><span class="pln">
xmlrpclib</span><span class="pun">.</span><span class="typ">Fault</span><span class="pun">:</span><span class="pln"> </span><span class="pun"><</span><span class="typ">Fault</span><span class="pln"> </span><span class="lit">8002</span><span class="pun">:</span><span class="pln"> </span><span class="str">"Can't serialize output: cannot marshal <type 'numpy.float64'> objects"</span><span class="pun">></span></code></pre>
</div>
<br>
</body>
</html>