使用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 相关文章推荐
详解supervisor使用教程
Nov 21 Python
深入浅析Python中的yield关键字
Jan 24 Python
Python贪心算法实例小结
Apr 22 Python
python3将视频流保存为本地视频文件
Jun 20 Python
Python将多个list合并为1个list的方法
Jun 27 Python
PyQt5实现五子棋游戏(人机对弈)
Mar 24 Python
opencv3/python 鼠标响应操作详解
Dec 11 Python
Keras 中Leaky ReLU等高级激活函数的用法
Jul 05 Python
python 将html转换为pdf的几种方法
Dec 29 Python
Python OpenCV快速入门教程
Apr 17 Python
python spilt()分隔字符串的实现示例
May 21 Python
Python NumPy灰度图像的压缩原理讲解
Aug 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
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
2019/09/19 PHP
jquery统计复选框选中示例
2013/11/05 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
js实现随机点名程序
2020/09/17 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
python基础教程之Hello World!
2014/08/29 Python
Python中的自定义函数学习笔记
2014/09/23 Python
Python中的模块和包概念介绍
2015/04/13 Python
开始着手第一个Django项目
2015/07/15 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
Python Flask基础教程示例代码
2018/02/07 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
python-opencv颜色提取分割方法
2018/12/08 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
Farah官方网站:男士服装及配件
2019/11/01 全球购物
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
商务英语本科生的自我评价分享
2013/11/15 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
2014信息公开实施方案
2014/02/22 职场文书
管理工程专业求职信
2014/08/10 职场文书
活动总结新闻稿
2014/08/30 职场文书
高质量“欢迎词”
2019/04/03 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers