2

sudsを非同期で実行する必要があるため、次の 2 つのアイデアについて考えていました。

  1. (より簡単) GAE python 2.7 ランタイムで許可されているため、各 suds 呼び出しを個別のスレッドで実行します。

  2. (はるかに難しい) async url fetch の上で実行するように suds lib を書き直します。

最初のオプションを使用したいのですが、2 番目のオプションよりも遅くなるかどうかはわかりません。

おそらく、GAE の経験が豊富な人が選択を手伝ってくれるでしょうか?

アップデート

結果は単一の Web リクエストである必要があるため、タスク キュー/mapreduce/バックエンドを使用できません

4

1 に答える 1

1

この質問によると、sudsはスレッドセーフなライブラリではありません。したがって、sudsクライアントオブジェクトを利用するスレッドごとに新しいクライアントを作成する必要があります。そうは言っても、選択肢1が最善の選択肢です。

また、sudsライブラリをGAEのキャッシングで機能させる方法については、こちらをご覧ください。

アップデート

試す他のテクニック(単一のWebリクエストで結果を必要としないユースケースの場合):

バックエンドとプルキュー:(常に電話をかける予定がある場合は、この方法を使用してください

sudsクライアントをメモリに保存し、実行する必要のあるタスクについてプルキューを常にポーリングする常時接続のバックエンドを作成します。このようにして、アプリケーションが行う必要のある多くのタスク/呼び出しをプッシュし、複数のバックエンドがデータを小さなチャンクで消費するようにすることができます。

タスクキュー

(コストを最小限に抑え、多くのSOAP呼び出しを一貫して行う予定がない場合は、この方法を使用してください)

タスクを作成し、AppEngineに複数のインスタンスにわたってニーズを実行させます。タスクがいつ実行されるかについての保証はないことを知っておいてください。しかし、私の経験では、これは問題ではありませんでした。

于 2013-02-21T18:35:33.163 に答える