[Fedora-suds-list] Caching Enhancements

Jeff Ortel jortel at redhat.com
Wed Jan 13 17:57:19 UTC 2010



On 01/13/2010 09:59 AM, Bruce Edge wrote:
> Would it be possible (or does this exist already?) to have an optional
> parameter to bypassed the cache? This would help with development
> environments where the server is changing rapidly.

Yes.  use the cache option.

Eg:

client = Client(url, cache=None)

>
> I appreciate the work you have done on this project. It is clearly the
> first choice of python SOAP client libraries now.
>
> Thanks
>
> -Bruce
>
> On Wed, Jan 13, 2010 at 6:20 AM, Jeff Ortel <jortel at redhat.com
> <mailto:jortel at redhat.com>> wrote:
>
>     All,
>
>     I finished and (committed r637) enhancements to the suds caching.
>       The previous approach added caching to the Transport layer and was
>     causing some problems.  It /blindly/ cached downloaded XML documents
>     such as WSDLs and imported XSD files as XML text.  The next time the
>     document is needed (at the same URL), the transport returned the
>     local (cached) copy of the XML file and it was SAX parsed as if it
>     was downloaded via http.  This actually saved a lot of time because
>     most servers returned these documents very slowly is many cases.
>       The problems with this approach are:
>       - Corrupt, incomplete or otherwise invalid XML document text was being
>         cached because the Transport layer was not content aware.  It
>     simply cached
>         whatever it downloaded.
>       - Invalid cache files caused SAX parsing exceptions until the
>     cache file
>         expired or the user cleared the cache.
>       - Cached files had to be SAX parsed every time the were retrieved.
>
>     The approach taken by the r637 enhancement puts caching above the
>     Transport layer and at the Document Processing layer.  By doing
>     this, suds is now caching sax.document.Document objects using python
>     pickle.  This ensures that cached XML documents are valid and allows
>     for proper handling of corrept, incomplete or otherwise invalid
>     cached files.  In the event that a cached file fails to load, the
>     document processing layer simply uses the transport to download a
>     good copy which is then SAX parsed and cached.
>
>     I benchmarked the performance difference between sax parsing and
>     unpickling a 2M XML file using cPickle.  In most cases, I observed a
>     ~2x performance gain using pickle.load() over sax parsing.  Yeah,
>     I'm a little surprised too.  I expected about a ~10x gain but at
>     least it's significantly better.
>
>     I tried really hard to preserve backwards compatibility but some
>     minor things did have to change.  These things should not affect
>     most users:
>       - The caching classes (Cache, FileCache, NoCache) moved from the
>     suds.transport package
>         to a suds.cache.py <http://suds.cache.py> module.
>       - All caching has been removed from the Transport classes.
>       - The get() & put() methods on the Cache interface have changed
>     slightly to be
>         document oriented instead of file pointer (fp) or file-like
>     oriented.
>       - Users disabling the cache using /NoCache/ should switch to the
>     already
>         existing:  Client(url, cache=None) syntax.  Or, import NoCache
>     from the suds.cache.
>       - Users implementing their own caches need to adapt to the changes
>     to the
>         Cache interface.
>
>     I plan to continue toward caching the entire WSDL (wsdl.Definitions)
>     object but this is a good interim step and solves most of the
>     caching problems for now.
>
>     This has been released in 0.3.9 beta which I believe to be very stable.
>
>     Hope this helps.
>
>     Regards,
>
>     Jeff
>
>
>     _______________________________________________
>     suds mailing list
>     suds at lists.fedoraproject.org <mailto:suds at lists.fedoraproject.org>
>     https://admin.fedoraproject.org/mailman/listinfo/suds
>
>
>
>
> _______________________________________________
> suds mailing list
> suds at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/suds

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5126 bytes
Desc: S/MIME Cryptographic Signature
Url : http://lists.fedoraproject.org/pipermail/suds/attachments/20100113/057f7c9e/attachment-0001.bin 


More information about the suds mailing list