python webservice

python webservice

前言

当项目比较大,数据量比较多的时候。根据业务拆分成多个系统就显得非常重要了。各个系统的交互肯定有数据交互,使用webservice就显得很重要了。比如我要把a系统的数据提供给b系统使用,就需要a系统封装一个api接口提供给b系统使用

遇到的问题

1、开始使用的是soaplib,在官网看到最新版的是2011年更新的。当时也没有放在心上,在安装使用过程中一直遇到很多问题,后面才知道soaplib只支持python2。后面才选用现在的spyne,spyne官网一直有更新,可支持python3.6
2、spyne结合使用django。启动成功后访问http://127.0.0.1:8000/出现404(如图),这是正常的。具体原因我也不知道
在这里插入图片描述
3、千万不要在同一django项目里面使用suds 客户端,不然会调用不成功。

过程

1、安装 spyne,subs(命令 pip3 install spyne/subs)
2、服务端代码:
from django.shortcuts import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from spyne import Application, rpc, ServiceBase, Unicode, Integer
from spyne import Iterable
from spyne.protocol.soap import Soap11
from spyne.server.django import DjangoApplication

class HelloWorldService(ServiceBase):

@rpc(Integer, _returns=Iterable(Unicode))
def count_sum(ctx, sumNum):
    for i in range(0, 5):
        sumNum += i
        print(sumNum)
    return HttpResponse(sumNum)

application = Application([HelloWorldService],
tns=‘spyne.examples.hello’,
in_protocol=Soap11(validator=‘lxml’),
out_protocol=Soap11()
)

sum_app = csrf_exempt(DjangoApplication(application))

3、配置django urls.py文件如下:
from django.conf.urls import url

from djiangosix import views

urlpatterns = [
url(r’^sumall/’, views.sum_app),
]

4、客户端代码:
from suds.client import Client
import traceback

try:
client = Client(“http://127.0.0.1:8000/sumall/?wsdl”)
result = client.service.count_sum(0)
print(result)
except:
traceback.print_exc()
5、先启动服务端,再启动客户端
服务端结果:
[17/Jun/2019 10:08:44] “GET /sumall/?wsdl HTTP/1.1” 200 2719
0
1
3
6
10
客户端结果:
(stringArray){
string[] =
“10”,
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值