<div dir="ltr">Hi Burak,<div><br></div><div>Is this work that you are doing to expnd on the implementation the wsdl parser for the 0.12 Spyne release (<a href="http://spyne.io/docs/2.11/faq.html#how-do-i-implement-a-predefined-wsdl">http://spyne.io/docs/2.11/faq.html#how-do-i-implement-a-predefined-wsdl</a>)?  I think the problem with Suds memory usage is their overly generous deep recursion. We added a hard-coded nesting limit to the Suds schema parser (see attached patch file which works with both the 0.4 original release and the latest 0.7dev suds-jurko) and we get very similar numbers to what you are seeing. We have yet to encounter a use case that breaks it but dialling the depth up is easy if we do. So if you use the Suds methodology, which *doesn't* have the problem of extending simple types, and limit the recursion depth it might get the best of both worlds.</div><div><br></div><div>Cheers,</div><div>Chris</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 24, 2015 at 8:00 AM, Burak Arslan <span dir="ltr"><<a href="mailto:burak.arslan@arskom.com.tr" target="_blank">burak.arslan@arskom.com.tr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Chris,<br>
<span class=""><br>
On 04/21/15 19:16, Chris Beck wrote:<br>
> Hi,<br>
> So sorry about not providing a working test case. Here is the Open<br>
> Travel xsd that is causing the parsing<br>
> issue: <a href="http://www.opentravel.org/2003A/OTA_CommonTypes.xsd" target="_blank">http://www.opentravel.org/2003A/OTA_CommonTypes.xsd</a><br>
><br>
<br>
</span>Spyne's schema parser does handle simple type extensions but not simple<br>
type unions.<br>
<br>
I created a gist that shows the issue here:<br>
<br>
<a href="https://gist.github.com/plq/c3537b4452841e28e7e7" target="_blank">https://gist.github.com/plq/c3537b4452841e28e7e7</a><br>
<br>
(it's huge, so clone it rather than clicking on it)<br>
<br>
This function is missing:<br>
<a href="https://github.com/arskom/spyne/blob/8b1dfa20f6f36cd54b219c8d1a6789494f32e7dc/spyne/interface/xml_schema/parser.py#L303" target="_blank">https://github.com/arskom/spyne/blob/8b1dfa20f6f36cd54b219c8d1a6789494f32e7dc/spyne/interface/xml_schema/parser.py#L303</a><br>
<br>
Which means we need 1) a Union type (like the Array type) 2) from_string<br>
and to_string functions for union types in ProtocolBase. 3) some simple<br>
code that creates Spyne's Union type based on the information in the<br>
xs:union tag there.<br>
<br>
Preliminary exploration (egrep 'type="[^"]+"' *.xsd -o | cut -d: -f2- |<br>
sort -u | grep -v xs: | wc -l) shows 739 types defined here. I did a<br>
test with a service that uses 1000 types as input to 1000 separate<br>
methods and RSS seems to be around 73 mb. That file is in the above gist<br>
as thousand.py as well.<br>
<br>
Best<br>
Burak<br>
<br>
_______________________________________________<br>
Soap mailing list<br>
<a href="mailto:Soap@python.org">Soap@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/soap" target="_blank">https://mail.python.org/mailman/listinfo/soap</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Christopher Beck<div><a href="mailto:cbeck@railkey.net" target="_blank">cbeck@railkey.net</a></div><div>+1.514.431.7759</div></div></div>
</div>