python webservice框架_python webservice hello world
最近在搞基于python的webservice项目,今天为把环境给配好,折腾了不少时间,还是把配的过程记录下来,以后备用:
首先你系统上要有python,这个不必说啦,我系统上用的是2.7+
其次,要用python进行webservice开发,还需要一些库:
lxml :
命令行下 sudo easy_install lxml 就能安装
pytz :
命令行下 sudo easy_install pytz 就能安装
soaplib:
进行webservice开发必须要用的库,可以在https://github.com/volador/soaplib拿到,注意要先安装上面两个插件再安装这个,因为这个依赖于上面两个插件,把zip拿下来后解压,sudo python setup.py install 就能安装了。
Soaplib is an easy to use python library for publishing soap web services using WSDL 1.1 standard, and answering SOAP 1.1 requests. With a very small amount of code, soaplib allows you to write a useful web service and deploy it as a WSGI application. 完成上面步骤后就能进行webservice发布了,看下helloworld:
直接贴代码:server.py
import soaplib
from soaplib.core.util.wsgi_wrapper import run_twisted #发布服务
from soaplib.core.server import wsgi
from soaplib.core.service import DefinitionBase #所有服务类必须继承该类
from soaplib.core.service import soap #声明注解
from soaplib.core.model.clazz import Array #声明要使用的类型
from soaplib.core.model.clazz import ClassModel #若服务返回类,该返回类必须是该类的子类
from soaplib.core.model.primitive import Integer,String
class C_ProbeCdrModel(ClassModel):
__namespace__ = "C_ProbeCdrModel"
Name=String
Id=Integer
class HelloWorldService(DefinitionBase): #this is a web service
@soap(String,_returns=String) #声明一个服务,标识方法的参数以及返回值
def say_hello(self,name):
return 'hello %s!'%name
@soap(_returns=Array(String))
def GetCdrArray(self):
L_Result=["1","2","3"]
return L_Result
@soap(_returns=C_ProbeCdrModel)
def GetCdr(self): #返回的是一个类,该类必须是ClassModel的子类,该类已经在上面定义
L_Model=C_ProbeCdrModel()
L_Model.Name=L_Model.Name
L_Model.Id=L_Model.Id
return L_Model
if __name__=='_main__':
soap_app=soaplib.core.Application([HelloWorldService], 'tns')
wsgi_app=wsgi.Application(soap_app)
print 'listening on 127.0.0.1:7789'
print 'wsdl is at: http://127.0.0.1:7789/SOAP/?wsdl'
run_twisted( ( (wsgi_app, "SOAP"),), 7789)
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('localhost', 7789, wsgi_application)
server.serve_forever()
except ImportError:
print 'error'
python server.py可以直接运行服务了。运行服务后打开浏览器,地址栏上键入:
http://localhost:7789/SOAP/?wsdl就能看到描述服务的xml文档了。
请求服务:
需要用到suds库:
python交互模式下键入:
from suds.client import Client
test=Client('http://localhost:7789/SOAP/?wsdl')
print test.service.say_hello('volador')
这样就调用了say_hello这个服务了。
python webservice框架_python webservice hello world相关推荐
- python gui框架_Python的GUI框架PySide的安装配置教程
(一)说在前面 Python自带了GUI模块Tkinter,只是界面风格有些老旧.另外就是各种GUI框架了. 之前安装过WxPython,并做了简单的界面.遂最近又重新搜索了一下网上关于Python ...
- python基础框架_Python基础框架和工具-阿里云开发者社区
Python基础框架和工具 最近在学Python金融大数据分析,在安装Python进行大数据分析的环境时遇到很多问题,例如:在安装pandas包时候就要到各种错误,总是缺少很多安装包,最后发现利用Py ...
- python任务调度框架_Python任务调度模块APScheduler
一.APScheduler 是什么&APScheduler四种组成部分? APScheduler全程为Advanced Python Scheduler,是一款轻量级的Python任务调度框架 ...
- python企业级框架_Python六大开源框架对比:Web2py略胜一筹
Python是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准库也是值得大家称赞的,Python甚至还自带 ...
- python 爬虫框架_Python常用的几个高效率的爬虫框架
1.Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中.用这个框架可以轻松爬下来如亚马逊商品信息之类的数 ...
- python数据处理框架_python 最快 web 框架 Sanci 快速入门
简介 Sanic 是一个和类Flask 的基于Python3.5+的web框架,它编写的代码速度特别快. 除了像Flask 以外,Sanic 还支持以异步请求的方式处理请求.这意味着你可以使用新的 a ...
- python企业级框架_Python六大开源框架对比:Web2py略胜一筹(转)
Python是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准库也是值得大家称赞的,Python甚至还自带 ...
- python 服务器框架_python 服务器框架
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 而我的想法是,掌握一个类似于框架的高级工具是有用的,但是基础的东西可以让你永远不 ...
- python定时任务框架_Python定时任务框架APScheduler
APScheduler是基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便.提供了基于日期.固定时间间隔以及crontab类型的任务,并且可以持久化任务.基 ...
- python 服务框架_Python Web服务高并发框架【1】(Tornado)
本节学习目标: (1)了解Tornado的特点 (2)了解Tornado工作流程 (3)掌握Tornado在Window及Linux中的安装 (4)理解同步.异步 (5)协程基础编程 本节课程内容: ...
最新文章
- java坐标点对称点的输出,编程java来确定一个对称的单词
- 1.1ASP.NET Web API 2入门
- 基于Struts2的供求信息网设计(一)
- Python字符串删除指定符号(不限位置)
- 写了多年代码,你会 StackOverflow 吗
- Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session框架
- mongoose 入门以及 mongoose 实现数据 的增、删、改、查
- [转载] JAVA8 创建流的5种方式
- linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题
- 启动django项目 默认启动与指定端口启动
- 单片机串口通信电平不匹配的解决电路,5V 3.3V串口通讯
- Puppet 实验十三 Foreman 基础使用
- CentOS 5 全功能WWW服务器搭建全教程
- 酷q插件开发Java_酷Q做一个随机二次元图片插件
- 嵌入式培训经验分享——网络编程项目实战(在线电子词典)
- 【Java基础】使用NumberFormat 、DecimalFormat进行数字格式化
- 推荐:本人使用频率最高的20款Mac软件(全)
- gitter 卸载_最佳Gitter频道:Rust
- 移植u-boot到S3C2440之从内存启动
- Unity - 使用Winform制作简易登录器