2012-02-16 3 views
1

私はWebサービス(SOAP)を公開し、複数の要求を同時に処理できるサーバーを簡単に作成するためのPythonライブラリを探しています。同時に複数の要求を処理するSOAPサーバー用のPythonライブラリ?

私はZSIとrcplibを使ってみましたが、成功しませんでした。

更新:
ご回答ありがとうございます。 ZSIとrcplib(soaplibの後継者)の両方が独自のHttpサーバーを実装しています。 ZSI/rcplibをあなたが言及したライブラリにどのように統合するのですか?

アップデート2:
いくつかの調整の後、私は、Linux上でこれをインストールして実行するために管理し、うまく動作するようです。
その後、私はWindowsにインストールしました。醜い微調整の後に、WSGIDaemonProcessがWindowsでサポートされていないという事実(mod_wsgiドキュメントでも言及されています)にはびびりました。私はとにかくそれを実行しようとしましたが、それは非同期的に各要求に動作するようですが、私はそれがうまくいくとはうまくいきません。

ありがとうとにかく...

答えて

1

のHello Worldの例では、パラメータを設定することができ、マルチプロセッシング設定すること

# File /home/myhome/test.wsgi 
import logging 

from rpclib.application import Application 
from rpclib.decorator import srpc 
from rpclib.interface.wsdl import Wsdl11 
from rpclib.protocol.soap import Soap11 
from rpclib.service import ServiceBase 
from rpclib.model.complex import Iterable 
from rpclib.model.primitive import Integer 
from rpclib.model.primitive import String 
from rpclib.server.wsgi import WsgiApplication 

class HelloWorldService(ServiceBase): 
    @srpc(String, Integer, _returns=Iterable(String)) 
    def say_hello(name, times): 
     ''' 
     Docstrings for service methods appear as documentation in the wsdl 
     <b>what fun</b> 
     @param name the name to say hello to 
     @param the number of times to say hello 
     @return the completed array 
     ''' 

     for i in xrange(times): 
      yield 'Hello, %s' % name 

application = WsgiApplication(Application([HelloWorldService], 'rpclib.examples.hello.soap', 
       interface=Wsdl11(), in_protocol=Soap11(), out_protocol=Soap11())) 

はまた

WSGIDaemonProcess example processes=5 threads=5 
WSGIProcessGroup example 

WSGIScriptAlias//home/myhome/test.wsgi 
<Directory /home/myhome/> 
Order deny,allow 
Allow from all 
</Directory> 
としてApacheの設定を変更rpclib例からこれをチェックしてください

必要に応じて、プロセスとスレッドを変更できます。

1

すみません、私はあなたのことを正しく理解していないかもしれません。

あなたのサーバーにHTTPリクエストを並行して処理させたいと思っていますが、コード/ライブラリについて考える必要はありません。パラレル化は、Apacheのhttpdとmod_wsgi/mod_pythonモジュールで行う必要があります。

「MaxClients 100」と「WSGIDaemonProcess webservice processes = 1 threads = 100」というようにhttpd.confを設定するだけです。

+0

私は質問を更新しました。あなたの答えも同様に更新してください:) – wafwaf

+1

盲目的に100をスレッドに設定するという、悪い考えです。そのようなスレッドが多すぎると、パフォーマンスを実際に妨げることがあります。より少ないスレッドでより多くのプロセスを使用する必要があります。 –

+0

@GrahamDumpletonグラハム、ありがとう。私は、アプリケーション= 1スレッド= 150のプロセスを使用していましたが、プロセス= 5スレッド= 30を試しましたが、クライアントではもっとうまく動作します。> 150 – rslnx

1

soaplibを使用して石鹸サービスを開発することができます。そのサービスを他のものに公開するには、Apacheとmod_wsgiモジュールを使用できます。それはマルチスレッドまたはあなたがrpclib

mod_wsgi

+0

質問を更新しました。あなたの答えも更新してください:) – wafwaf

関連する問題