我有我已經通過只是單純的執行python mysoapserver.py
你如何設置一個pysimplesoap服務器在wsgi上運行在apache2上?
但是運行作爲獨立的應用程序,即一個SOAP服務器,我想它通過使用的Apache2 WSGI進行訪問。
下面是當前的代碼的一些代碼摘錄:
進口:
from pysimplesoap.server import SoapDispatcher, SOAPHandler, WSGISOAPHandler
代碼摘錄
dispatcher = SoapDispatcher(
'TransServer',
location = "http://127.0.0.1:8050/",
action = 'http://127.0.0.1:8050/', # SOAPAction
namespace = "http://example.com/sample.wsdl", prefix="ns0",
trace = True,
ns = True)
#Function
def settransactiondetails(sessionId,msisdn,amount,language):
#Some Code here
#And more code here
return {'sessionId':sid,'responseCode':0}
# register the user function
dispatcher.register_function('InitiateTransfer', settransactiondetails,
returns={'sessionId': str,'responseCode':int},
args={'sessionId': str,'msisdn': str,'amount': str,'language': str})
logging.info("Starting server...")
httpd = HTTPServer(("", 8050),SOAPHandler)
httpd.dispatcher = dispatcher
httpd.serve_forever()
我怎麼會需要更改上面的代碼以便通過wsgi在apache2上訪問它。 您還可以包含我需要在/etc/apache2/sites-available/default
文件中進行的更改。
感謝您的支持。 但是,我需要添加/替換Apache以便能夠運行此應用程序的代碼是什麼? 我不認爲它是 「從wsgiref.simple_server進口make_server 的httpd = make_server( '',8050,應用程序) httpd.serve_forever()」 那你共享。看起來我仍然將它作爲獨立應用程序運行,而不是使用Apache。 – Phil
@Phil你是對的,我添加了這段代碼,以便保留單獨運行腳本的可能性。對於Apache來運行這個應用程序,你需要的唯一python代碼就是應用程序變量定義。這就是wsgi和mod_wsgi的工作方式 - 「WSGIScriptAlias」指令告訴Apache應該在哪裏查找包含此應用程序定義的腳本以運行。你當然也需要安裝mod_wsgi :)你可以在http://modwsgi.readthedocs.org/en/latest/configuration-directives/WSGIScriptAlias上閱讀更多關於它的內容。html – jhnwsk
@Phil我根據你的評論編輯了我的答案,希望它現在更具信息性。 – jhnwsk