Я использую Suds для доступа к веб-службе SOAP из python. Если у меня есть несколько потоков исполнения threading.Thread, может ли каждый из них одновременно безопасно обращаться к одному и тому же экземпляру suds.client.Client или я должен создавать отдельные объекты Client для каждого потока?
Использование Suds для SOAP в python, являются ли объекты suds.client.Client потокобезопасными?
Ответы (1)
Насколько я знаю, они НЕ потокобезопасны. Вы можете безопасно использовать один и тот же клиентский объект, если вы используете очередь или пул потоков. Таким образом, когда один поток завершает работу с клиентом, следующий может использовать его.
Однако для сетевых событий вам, вероятно, следует спросить себя, что лучше. Многопоточность или асинхронное сетевое программирование? Недавно было предложено исправление для SUDS, чтобы включить поддержку асинхронных сокетов для использования с событиями. пакеты, такие как Twisted, greenlets и т. д.
person
jathanism
schedule
10.07.2010
Обратите внимание, что даже если вы используете гринлеты с suds, вы не обязательно сможете совместно использовать один и тот же экземпляр между зелеными потоками, поскольку ваш поток может быть запланирован во время операций ввода-вывода, и в этот момент состояние клиента может измениться. обновляться.
- person Dobes Vandermeer; 06.01.2017