[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