<div dir="ltr">Nicola,<br><div><br>I don't know whether this makes sense in the context of xmlrpc, but perhaps you can use numpy's tostring and fromstring functions. If you do this you have to also send the datatype so that fromstring knows how to unpack (that's the part where I'm not sure if this strategy is xmlrpc-ish).<br>
<br></div><div>-Daniel<br><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Apr 30, 2014 at 10:48 AM, Nicola Cesca <span dir="ltr"><<a href="mailto:nicola.cesca@mail.com" target="_blank">nicola.cesca@mail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  

    
  
  <div text="#000000" bgcolor="#FFFFFF">
    Hi all,<br>
    I'm newbie. I got a lot of problem using xmlrpc and numpy<br>
    <br>
    <div>
      <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><code><span>from</span><span> twisted</span><span>.</span><span>web </span><span>import</span><span> xmlrpc</span><span>,</span><span> server
</span><span>import</span><span> numpy </span><span>as</span><span> np

</span><span>class</span><span> </span><span>MioServer</span><span>(</span><span>xmlrpc</span><span>.</span><span>XMLRPC</span><span>):</span><span>
    </span><span>"""
    An example object to be published.
    """</span><span>

    </span><span>def</span><span> xmlrpc_test_np</span><span>(</span><span>self</span><span>):</span><span>
        </span><span>return</span><span> np</span><span>.</span><span>sqrt</span><span>(</span><span>2</span><span>)</span><span>

</span><span>if</span><span> __name__ </span><span>==</span><span> </span><span>'__main__'</span><span>:</span><span>
    </span><span>from</span><span> twisted</span><span>.</span><span>internet </span><span>import</span><span> reactor
    r </span><span>=</span><span> </span><span>MioServer</span><span>()</span><span>
    reactor</span><span>.</span><span>listenTCP</span><span>(</span><span>7080</span><span>,</span><span> server</span><span>.</span><span>Site</span><span>(</span><span>r</span><span>))</span><span>
    reactor</span><span>.</span><span>run</span><span>()</span></code></pre>
      <p>client:</p>
      <pre><code><span>import</span><span> xmlrpclib

</span><span>if</span><span> __name__</span><span>==</span><span>'__main__'</span><span>:</span><span>
    x</span><span>=</span><span>xmlrpclib</span><span>.</span><span>ServerProxy</span><span>(</span><span>'<a href="http://localhost:7080/" target="_blank">http://localhost:7080/</a>'</span><span>)</span><span>
    </span><span>print</span><span> x</span><span>.</span><span>test_np</span><span>()</span></code></pre>
      <p>Exception:</p>
      <pre><code><span>Traceback</span><span> </span><span>(</span><span>most recent call last</span><span>):</span><span>
  </span><span>File</span><span> </span><span>"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>,</span><span> line </span><span>1446</span><span>,</span><span> </span><span>in</span><span> </span><span><</span><span>module</span><span>></span><span>
    debugger</span><span>.</span><span>run</span><span>(</span><span>setup</span><span>[</span><span>'file'</span><span>],</span><span> </span><span>None</span><span>,</span><span> </span><span>None</span><span>)</span><span>
  </span><span>File</span><span> </span><span>"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>,</span><span> line </span><span>1092</span><span>,</span><span> </span><span>in</span><span> run
    pydev_imports</span><span>.</span><span>execfile</span><span>(</span><span>file</span><span>,</span><span> globals</span><span>,</span><span> locals</span><span>)</span><span> </span><span>#execute the script</span><span>
  </span><span>File</span><span> </span><span>"C:\Users\Stone\Documents\FastDose\src\Beagle\Prove e test\xmlrpc_client.py"</span><span>,</span><span> line </span><span>28</span><span>,</span><span> </span><span>in</span><span> </span><span><</span><span>module</span><span>></span><span>
    </span><span>print</span><span> x</span><span>.</span><span>test_np</span><span>()</span><span>
  </span><span>File</span><span> </span><span>"C:\Python27\lib\xmlrpclib.py"</span><span>,</span><span> line </span><span>1224</span><span>,</span><span> </span><span>in</span><span> __call__
    </span><span>return</span><span> self</span><span>.</span><span>__send</span><span>(</span><span>self</span><span>.</span><span>__name</span><span>,</span><span> args</span><span>)</span><span>
  </span><span>File</span><span> </span><span>"C:\Python27\lib\xmlrpclib.py"</span><span>,</span><span> line </span><span>1578</span><span>,</span><span> </span><span>in</span><span> __request
    verbose</span><span>=</span><span>self</span><span>.</span><span>__verbose
  </span><span>File</span><span> </span><span>"C:\Python27\lib\xmlrpclib.py"</span><span>,</span><span> line </span><span>1264</span><span>,</span><span> </span><span>in</span><span> request
    </span><span>return</span><span> self</span><span>.</span><span>single_request</span><span>(</span><span>host</span><span>,</span><span> handler</span><span>,</span><span> request_body</span><span>,</span><span> verbose</span><span>)</span><span>
  </span><span>File</span><span> </span><span>"C:\Python27\lib\xmlrpclib.py"</span><span>,</span><span> line </span><span>1297</span><span>,</span><span> </span><span>in</span><span> single_request
    </span><span>return</span><span> self</span><span>.</span><span>parse_response</span><span>(</span><span>response</span><span>)</span><span>
  </span><span>File</span><span> </span><span>"C:\Python27\lib\xmlrpclib.py"</span><span>,</span><span> line </span><span>1473</span><span>,</span><span> </span><span>in</span><span> parse_response
    </span><span>return</span><span> u</span><span>.</span><span>close</span><span>()</span><span>
  </span><span>File</span><span> </span><span>"C:\Python27\lib\xmlrpclib.py"</span><span>,</span><span> line </span><span>793</span><span>,</span><span> </span><span>in</span><span> close
    </span><span>raise</span><span> </span><span>Fault</span><span>(**</span><span>self</span><span>.</span><span>_stack</span><span>[</span><span>0</span><span>])</span><span>
xmlrpclib</span><span>.</span><span>Fault</span><span>:</span><span> </span><span><</span><span>Fault</span><span> </span><span>8002</span><span>:</span><span> </span><span>"Can't serialize output: cannot marshal <type 'numpy.float64'> objects"</span><span>></span></code></pre>

    </div>
      <br>
  </div>

<br>_______________________________________________<br>
Twisted-Python mailing list<br>
<a href="mailto:Twisted-Python@twistedmatrix.com">Twisted-Python@twistedmatrix.com</a><br>
<a href="http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python" target="_blank">http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Daniel Sank<br>Department of Physics<br>Broida Hall<br>University of California<br>Santa Barbara, CA 93117<br>(805)893-3899
</div>