使用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使用SocketServer模块编写基本服务器程序的教程
Jul 12 Python
Python机器学习之SVM支持向量机
Dec 27 Python
Python Paramiko模块的使用实际案例
Feb 01 Python
python XlsxWriter模块创建aexcel表格的实例讲解
May 03 Python
pytorch cnn 识别手写的字实现自建图片数据
May 20 Python
python找出一个列表中相同元素的多个索引实例
Jun 11 Python
python redis 批量设置过期key过程解析
Nov 26 Python
tensorflow 变长序列存储实例
Jan 20 Python
pandas的resample重采样的使用
Apr 24 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 Python
使用pytorch 筛选出一定范围的值
Jun 28 Python
python实现数学模型(插值、拟合和微分方程)
Nov 13 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
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
Js nodeType 属性全面解析
2013/11/14 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
Django数据库表反向生成实例解析
2018/02/06 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
python进行两个表格对比的方法
2018/06/27 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
python实现五子棋程序
2020/04/24 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
2014年道德讲堂实施方案
2014/03/05 职场文书
期末评语大全
2014/05/04 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
2014年保管员工作总结
2014/11/18 职场文书
悬空寺导游词
2015/02/05 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
Golang 遍历二叉树
2022/04/19 Golang