使用rpclib进行Python网络编程时的注释问题


Posted in Python onMay 06, 2015

rpclib 是一个非常好用的 python webservice 库,可以动态的生成 wsdl, 不过这个项目已经基本停止,并被一个新的项目取代 spyne,由于旧的项目 工作已经比较稳定,所以我没有贸然升级到 spyne。

我在 rpclib 编写 service 方法时,遇到一个奇怪的错误: 访问 wsdl (http://localhost:9898/?wsdl) 页面,返回 502 Bad Gateway。

在日志中看到如下错误信息:

ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters

我检查了代码,对比了之前可以工作的版本,发现并没有什么不对的地方。

@srpc(RequestModel, _returns=Unicode)
def shenzhen(request):
  """
  根据传入的token、车牌号及车驾号,以及验证码
  查询该车辆的违章记录
  """
  logging.info(request)
  query = ShenZhenQuery(request)
  return query.query_car_records()

但就是没有正确生成 wsdl,后来我删除了方法内所有的内容(包括注释),只留下一条返回 unicode 字符串的语句,然后就工作正常了,但是当我加入了方法的文档注释后,又出来了之前的错误,于是我 怀疑到了注释上:中文的注释,却没有使用 unicode 字符串,于是使用 u"" 中文注释 """ 后,一切正常!

查看生成的 wsdl,发现原来原来 rpclib 使用注释生成了

<wsdl:documentation>

根据传入的token、车牌号及车驾号,以及验证码 查询该车辆的违章记录

</wsdl:documentation>

难怪一遇到中文注释就会出错!

Python 相关文章推荐
Python第三方库xlrd/xlwt的安装与读写Excel表格
Jan 21 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
python list格式数据excel导出方法
Oct 31 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
Jul 01 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
Python logging模块写入中文出现乱码
May 21 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 Python
详解Pytorch显存动态分配规律探索
Nov 17 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 Python
Django前后端分离csrf token获取方式
Dec 25 Python
Python Django搭建文件下载服务器的实现
May 10 Python
python模板入门教程之flask Jinja
Apr 11 Python
pymongo给mongodb创建索引的简单实现方法
May 06 #Python
Python中用PIL库批量给图片加上序号的教程
May 06 #Python
python写入中英文字符串到文件的方法
May 06 #Python
python使用xlrd模块读写Excel文件的方法
May 06 #Python
在Python中使用全局日志时需要注意的问题
May 06 #Python
python通过post提交数据的方法
May 06 #Python
python实现逆波兰计算表达式实例详解
May 06 #Python
You might like
一个显示天气预报的程序
2006/10/09 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
List Installed Software Features
2007/06/11 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
python回调函数中使用多线程的方法
2017/12/25 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
如何用python整理附件
2018/05/13 Python
python实现简单多人聊天室
2018/12/11 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
QML使用Python的函数过程解析
2019/09/26 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
请解释在new与override的区别
2012/10/29 面试题
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
承诺书的格式范文
2014/03/28 职场文书
工伤赔偿协议书
2014/04/15 职场文书
防灾减灾宣传标语
2014/10/07 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
详解Python requests模块
2021/06/21 Python
Python find()、rfind()方法及作用
2022/12/24 Python