使用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 相关文章推荐
django接入新浪微博OAuth的方法
Jun 29 Python
bpython 功能强大的Python shell
Feb 16 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
python实现顺序表的简单代码
Sep 28 Python
python实现对输入的密文加密
Mar 20 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
python flask几分钟实现web服务的例子
Jul 26 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
python计算无向图节点度的实例代码
Nov 22 Python
python实现对变位词的判断方法
Apr 05 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
Apr 07 Python
tensorflow模型转ncnn的操作方式
May 25 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
德生PL330的评价与改造
2021/03/02 无线电
有关PHP 中 config.m4 的探索
2020/08/26 PHP
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
Python模拟登录验证码(代码简单)
2016/02/06 Python
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
Django实现单用户登录的方法示例
2019/03/28 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
学生个人的自我评价分享
2013/11/05 职场文书
职业生涯规划书范文
2014/03/10 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
禁毒心得体会范文
2016/01/15 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers