sudsを使用してSOAP経由で大量のデータを取得しているPythonプログラムが動作しています。Web サービスは、各フェッチ呼び出しでnnn行を取得し、後続の呼び出しで次のnnn行を取得できるように、ページング機能を使用して実装されています。次のようなコードでHTTPサーバーに認証すると
client = suds.client.Client(url=url、場所=場所、ユーザー名=ユーザー名、パスワード=パスワード、タイムアウト=タイムアウト)
すべてがうまく機能します。ただし、次を使用する場合
t = suds.transport.https.HttpAuthenticated(ユーザー名=ユーザー名、パスワード=パスワード) t.handler = urllib2.HTTPBasicAuthHandler(t.pm) t.urlopener = urllib2.build_opener(t.handler) client = suds.client.Client(url=url, 場所=場所, タイムアウト=タイムアウト, トランスポート=t)
正確に6回の反復で機能します。つまり、フェッチごとに 10 行のフェッチ制限を指定すると、60 行が返されます。7回目のフェッチで、私は受け取ります
ファイル「build/bdist.linux-i686/egg/suds/client.py」、542 行目、__call__ 内 ファイル「build/bdist.linux-i686/egg/suds/client.py」、602行目、invoke ファイル「build/bdist.linux-i686/egg/suds/client.py」、649行目、送信中 ファイル「build/bdist.linux-i686/egg/suds/client.py」、698行目、失敗 AttributeError: 'NoneType' オブジェクトには属性 'read' がありません
これを引き起こしている可能性があるものについて、誰か提案がありますか。問題を引き起こしているのは間違いなくこの変化です。認証スタイルを前後に入れ替えることができ、完全に再現可能です。
suds 0.4でpython 2.6.6を実行しています。
ありがとう