使用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 ORM框架SQLAlchemy学习笔记之关系映射实例
Jun 10 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
Windows系统配置python脚本开机启动的3种方法分享
Mar 10 Python
Python使用shelve模块实现简单数据存储的方法
May 20 Python
详解Django通用视图中的函数包装
Jul 21 Python
基于python3 类的属性、方法、封装、继承实例讲解
Sep 19 Python
Python编程之gui程序实现简单文件浏览器代码
Dec 08 Python
如何在django里上传csv文件并进行入库处理的方法
Jan 02 Python
Python使用sax模块解析XML文件示例
Apr 04 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
Jun 05 Python
实现ECharts双Y轴左右刻度线一致的例子
May 16 Python
Python3获取cookie常用三种方案
Oct 05 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
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
分享20款好玩的jQuery游戏
2011/04/17 Javascript
ScrollDown的基本操作示例
2013/06/09 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
关于引入vue.js 文件的知识点总结
2020/01/28 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
python flask实现分页效果
2017/06/27 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
中专毕业生求职简历的自我评价
2013/10/21 职场文书
保护环境建议书300字
2014/05/13 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
谢师宴邀请函
2015/02/02 职场文书
倡议书怎么写?
2019/04/11 职场文书
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫