使用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保存字符串到文件的方法
Jul 01 Python
Python编程中字符串和列表的基本知识讲解
Oct 14 Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 Python
Python数据类型详解(二)列表
May 08 Python
使用Python对MySQL数据操作
Apr 06 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
Django实战之用户认证(用户登录与注销)
Jul 16 Python
Python global全局变量函数详解
Sep 18 Python
python 获取页面表格数据存放到csv中的方法
Dec 26 Python
将python图片转为二进制文本的实例
Jan 24 Python
Django models.py应用实现过程详解
Jul 29 Python
opencv python图像梯度实例详解
Feb 04 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/06/20 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
vue 实现特定条件下绑定事件
2019/11/09 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
Python爬取国外天气预报网站的方法
2015/07/10 Python
python中range()与xrange()用法分析
2016/09/21 Python
python opencv摄像头的简单应用
2019/06/06 Python
python实现复制文件到指定目录
2019/10/16 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
python 写一个性能测试工具(一)
2020/10/24 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
护理专业推荐信
2013/11/07 职场文书
学校消防安全制度
2014/01/30 职场文书
小学科学教学计划
2015/01/21 职场文书
小学生暑假安全公约
2015/07/14 职场文书
初三化学教学反思
2016/02/22 职场文书
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
python元组打包和解包过程详解
2021/08/02 Python
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS