在Python中使用Suds进行SOAP操作,suds.client.Client对象是否线程安全?

5

我正在使用Suds从Python访问SOAP Web服务。如果我有多个线程.Thread执行线程,它们每个都可以安全地同时访问同一个suds.client.Client实例,还是必须为每个线程创建单独的Client对象?

1个回答

2
据我所知,它们不是线程安全的。只要您使用队列或线程池,就可以安全地使用相同的客户端对象。这样,当一个线程完成与客户端的操作后,下一个线程就可以使用它。
但是对于基于网络的事件,您应该考虑哪种方式更好。使用线程还是异步网络编程?最近有一个补丁提议用于支持异步套接字,以便与基于事件的软件包(如Twisted、greenlets等)一起使用。具体请参见SUDS的补丁

请注意,即使您在使用suds时使用了greenlets,您也不一定能够在绿色线程之间共享相同的实例,因为在I/O操作期间,您的线程可能会被调度出去,此时客户端的状态可能会被更新。 - Dobes Vandermeer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接