对于SPYE的扩展,因此您可以使用委托类轻松地覆盖服务。

spyne-delegate的Python项目详细描述


Spyne的扩展,以便您可以使用委托类轻松重写服务。

示例用法:

importloggingfromwsgiref.simple_serverimportmake_serverfromwsgiref.validateimportvalidatorfromspyneimportApplication,Unicodefromspyneimportrpcasoriginal_spyne_rpcfromspyne.model.compleximportComplexModelfromspyne.protocol.soap.soap11importSoap11fromspyne.server.wsgiimportWsgiApplicationfromspynedelegate.metaimportDelegateBase,ExtensibleServiceBase,rpclogging.basicConfig(level=logging.DEBUG)logger=logging.getLogger(__name__)# modelsclassChicken(ComplexModel):__namespace__="spyne.delegate.chicken"name=UnicodeclassCow(ComplexModel):__namespace__="spyne.delegate.cow"name=Unicode# delegatesclassChickenDelegate(DelegateBase):@rpc(Chicken,_returns=Chicken.customize(max_occurs='unbounded'))defmultiplyChickens(self,chicken):# noqareturn[chicken,chicken]classCowDelegate(DelegateBase):@propertydefmethod_request_string(self):# you can access the context with self.ctxreturnself.ctx.method_request_stringdefgen_name(self,name):# and you can use self as wellreturn"%s -> %s"%(self.method_request_string,name)@rpc(Cow,_returns=Unicode)defsayMooh(self,cow):# noqareturnself.gen_name(cow.name)@rpc(Cow,_returns=Unicode)defnoInheritance(self,cow):# noqa# This method won't be inherited because we set the# collect_base_methods = False in the overridden delegatereturnself.gen_name(cow.name)classCowDelegateOverridden(CowDelegate):# With this property we don't expose inherited methods from the base# classcollect_base_methods=False@rpc(Cow,_returns=Unicode)defsayMooh(self,cow):# noqa# call the super and add a 'overridden' stringresult=super(CowDelegateOverridden,self).sayMooh(cow)return"%s overridden"%result@rpc(Unicode,_returns=Unicode)defgenerateName(self,name):# shows that we call a regular supermethodreturnsuper(CowDelegateOverridden,self).gen_name(name)# inheritanceclassFarmDelegate(ChickenDelegate,CowDelegateOverridden):pass# servicesclassChickenService(ExtensibleServiceBase):delegate=ChickenDelegateclassFarmService(ExtensibleServiceBase):delegate=FarmDelegate@original_spyne_rpc(_returns=Unicode)defthisStillWorks(ctx):# noqareturn"Old fashioned spyne"farm_application=Application([FarmService],tns='spyne.delegate.farm',name='farm-application',in_protocol=Soap11(validator='lxml'),out_protocol=Soap11())if__name__=="__main__":wsgi_application=WsgiApplication(farm_application)wsgi_server=make_server('localhost',9876,validator(wsgi_application))logger.info('Starting server at %s:%s.'%('localhost',9876))logger.info('WSDL is at: /?wsdl')wsgi_server.serve_forever()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java集合属性值   java字符串==运算符是否比较引用?   java是否存在过太多的ListView或适配器?   json获取java中类路径中下载的文件   我可以用java代码解决数据库并发问题吗?   在多个线程中使用forEach()或使用forEach()和lambdas进行java集合迭代   java输出JFrame中的整个循环   java禁用高度详细的日志记录   java在没有特定属性的对象中访问模型的值   java Smack xmpp建立连接   处理过时域对象引起的并发问题的java策略(Grails/GORM/Hibernate)   java从ObservableList中提取元素   使用图像进行java相似图像搜索   java ListView和图像:我快疯了   在Java中,如何从毫秒时间戳中提取一天的周期?   java我需要这样的设计,但我面临两个问题   java如何获取JGoodies FormLayout中的单元格大小   Spring引导生成的java War文件未部署到Weblogic 12c