<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>