현재 suds 패키지를 사용하여 새로운 클라이언트에 연결하는 Python 스크립트를 작성하고 있습니다. 내가 URL을 suds.Client를 호출 할 때, 나는 재귀 오류 얻을 :Python suds - wsdl.py에서 재귀 오류가 발생했습니다.
: 처음에는RuntimeError: maximum recursion depth exceeded while pickling an object
File "c:\Users\mdriscoll\Documents\projects\test_soap\test_soap.py", line 112, in <module>
main(sys.argv[1:])
File "c:\Users\mdriscoll\Documents\projects\test_soap\test_soap.py", line 100, in main
sendSOAPMsg(agency, fax_id, fax_num, setxid)
File "c:\Users\mdriscoll\Documents\projects\test_soap\test_soap.py", line 32, in sendSOAPMsg
client = Client('https://somerandomclient.com/blahblah.svc?wsdl')
File "c:\Users\mdriscoll\Documents\projects\test_soap\suds\client.py", line 112, in __init__
self.wsdl = reader.open(url)
File "c:\Users\mdriscoll\Documents\projects\test_soap\suds\reader.py", line 152, in open
d = self.fn(url, self.options)
File "c:\Users\mdriscoll\Documents\projects\test_soap\suds\wsdl.py", line 157, in __init__
self.open_imports()
File "c:\Users\mdriscoll\Documents\projects\test_soap\suds\wsdl.py", line 202, in open_imports
imp.load(self)
File "c:\Users\mdriscoll\Documents\projects\test_soap\suds\wsdl.py", line 314, in load
d = Definitions(url, options)
File "c:\Users\mdriscoll\Documents\projects\test_soap\suds\wsdl.py", line 136, in __init__
d = reader.open(url)
File "c:\Users\mdriscoll\Documents\projects\test_soap\suds\reader.py", line 80, in open
cache.put(id, d)
File "c:\Users\mdriscoll\Documents\projects\test_soap\suds\cache.py", line 336, in put
bfr = pickle.dumps(object, self.protocol)
을, 나는 그것이 스택에 앞에서 언급 한 문제와 관련 있다고 생각
하지만 suds 'schema.py의 문제입니다. 필자가 언급 한 패치를 시도했지만 효과가 없으며 패치에 추가 된 로깅이 호출되지 않기 때문에 문제가되지 않습니다.
저는 suds 4.1 베타가있는 Windows에서 Python 2.6을 실행하고 있습니다. 참고 : 추적 이름의 언급이 허용되지 않아서 추적 로그의 URL이 삭제되었습니다.
pickle이 덤프하려고하는 객체에 순환 참조가 있습니까? –
내가 아는 것은 아닙니다. 이 문제는 client = suds.client.Client (url)을 호출 할 때 발생하므로 라이브러리 코드 자체에서 발생합니다. 원시 WSDL "코드"도 살펴 보았습니다.하지만 SOAP에 대해 익숙하지 않아서 무엇을 검색해야하는지 알지 못합니다. –