使用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分析apache访问日志脚本分享
Feb 26 Python
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
python实现简单中文词频统计示例
Nov 08 Python
python函数的万能参数传参详解
Jul 26 Python
python画微信表情符的实例代码
Oct 09 Python
python 申请内存空间,用于创建多维数组的实例
Dec 02 Python
Python流程控制语句的深入讲解
Jun 15 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
3分钟看懂Python后端必须知道的Django的信号机制
Jul 26 Python
如何使用python写截屏小工具
Sep 29 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
Oct 18 Python
python - asyncio异步编程
Apr 06 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
BBS(php &amp; mysql)完整版(八)
2006/10/09 PHP
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
2020/05/09 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
Python搜索引擎实现原理和方法
2017/11/27 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
python交换两个变量的值方法
2019/01/12 Python
将python图片转为二进制文本的实例
2019/01/24 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
Python列表的切片实例讲解
2019/08/20 Python
Python几种常见算法汇总
2020/06/02 Python
为什么是 Python -m
2020/06/19 Python
python二维图制作的实例代码
2020/12/03 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
求职信范文怎么写
2014/01/29 职场文书
关于保护环境的建议书
2014/05/13 职场文书
就职演讲稿范文
2014/05/19 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers