如何基于Python搭建Linux SOAP 服务平台
关键词:
- Suse 12 SP1
- Python 2.7.15
- Flask-Spyne
- uWSGI
- Nginx
**前提:**linux安装python、Flask-Spyne库、uWSGI和Nginx
其中Flask-Spyne库是用户Flask上快速起Spyne服务,具体使用方法可以参考PyPi样例
服务主文件
#testSpyne.py
app=Flask(__name__)
@app.route('/')
def hello():
return "<h1 style='color:blue'>Hello Flask!</h1>"
spyne = Spyne(app)
#spyne.Service.__address_location__='http://10.121.48.19/ABCSoap/'
class ABCSoap(spyne.Service):
__service_url_path__ = '/ABCSoap' #路径
#__target_namespace__ = 'http://www.tzabc.com'
__in_protocol__ = Soap11(validator='lxml')
__out_protocol__ = Soap11()
@spyne.srpc(Unicode, _returns=Unicode)
def sendSMS(inMobile):
return inMobile
if __name__=="__main__":
app.run(host='127.0.0.1')
代理文件
#wsgi.py
from testSpyne import app
if __name__=="__main__":
app.run()
两个文件生成后,可以通过uwsgi命令先行测试
uwsgi –socket 127.0.0.1:8888 –protocol=http -w wsgi:app
如果成功,则执行下面的Nginx连接,主要通过Nginx的连接分配进行
修改Nginx安装目录下的conf/nginx.conf
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8888;
}
}
其中的proxy_pass即为uwsgi命令中的代理地址
配置后可以reload nginx服务,此时输入服务器的地址即可访问Flask的服务
关注点:
- 此时发布的SOAP服务 soap:address_location 为内部127.0.0.1的地址,可以修改WSDL文件的address_location参数配置其为外部地址
- 如果希望uWSGI服务开机后台启动,可以配置uwsgi.ini文件并将命令添加到rc.d文件中(suse linux 为boot文件)
- 如果针对不同的SOAP有不同的访问地址(如内外网服务,可以配置address_location为外网转换地址)