2

私はPythonのグリーンハンドです。次のようなPythonを使用した単純なWebサービスがあります。

enter code here

import soaplib
from soaplib.core.service import rpc, DefinitionBase
from soaplib.core.model.primitive import String, Integer
from soaplib.core.server import wsgi
from soaplib.core.model.clazz import Array
from soaplib.core.service import soap

class HelloWorldService(DefinitionBase):

    @soap(String,Integer,_returns=Array(String))
    def say_hello(self,name,times):
        results = []
        for i in range(0,times):
            results.append('Hello, %s'%name)
        return results
if __name__=='__main__':

    try:

        from wsgiref.simple_server import make_server
        soap_application = soaplib.core.Application([HelloWorldService], 'tns')
        wsgi_application = wsgi.Application(soap_application)
        server = make_server('10.44.138.231', 9999, wsgi_application)
        server.serve_forever()

    except ImportError:

        print "Error: example server code requires Python >= 2.5"

ローカルホストでサービスにアクセスするときは非常に高速ですが、ローカルエリアネットワーク内の別のホストからは非常に遅くなります。

なので、このプログラムをapacheにデプロイしたいのですが、難しいようです。グーグルで長い間検索していて、今はとても疲れています。助けてくれる人、ありがとう

4

2 に答える 2

1

WSGIはPythonWebアプリケーションをホストする標準的な方法であるため、mod_wsgi(ではなく)を使用することをお勧めします。mod_python

applicationこの場合、グローバルスコープで呼び出される関数が必要です。

        # ....
        return results

soap_application = soaplib.core.Application([HelloWorldService], 'tns')
application = wsgi.Application(soap_application)

if __name__ == "__main__":
    # ....

次に、Apacheでmod_wsgiを有効にし、(WSGIScriptAliasメインの)にディレクティブを追加します。以前にApacheを構成したことがある場合は、ヘルプページに適切にアクセスできます。

于 2012-06-27T08:06:29.980 に答える
0

WebサービスはWSGIを使用してファイルを提供するため、 mod_wsgiなどのWSGI準拠のApacheモジュールを使用できます。

GunicornのようなスタンドアロンのWSGIサーバーを使用して、プライマリWebサーバーからGunicornサーバープロセスにリクエストを渡すこともできます。

Apacheを使用する必要がない場合:Gunicornまたはuwsgiと組み合わせたNginxは、WSGIアプリを提供するために非常に広く使用されているソリューションです。

于 2012-06-27T07:58:46.817 に答える