使用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正则表达式如何进行字符串替换实例
Dec 28 Python
python解析含有重复key的json方法
Jan 22 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
python 判断文件还是文件夹的简单实例
Jun 10 Python
Python实现 PS 图像调整中的亮度调整
Jun 28 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
python 字典 setdefault()和get()方法比较详解
Aug 07 Python
Python实现的爬取豆瓣电影信息功能案例
Sep 15 Python
Django ORM filter() 的运用详解
May 14 Python
python安装后的目录在哪里
Jun 21 Python
python3实现飞机大战
Nov 29 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
Jan 27 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 防恶意刷新实现代码
2010/05/16 PHP
php木马webshell扫描器代码
2012/01/25 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
JavaScript触发器详解
2007/03/10 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
Python连接DB2数据库
2016/08/27 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
使用Python实现画一个中国地图
2019/11/23 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
理工大学毕业生自荐信
2013/11/01 职场文书
婚礼主持词开场白
2014/03/13 职场文书
生日主持词
2014/03/20 职场文书
毕业生找工作求职信
2014/08/05 职场文书
教师研修随笔感言
2015/11/18 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
Python如何将list中的string转换为int
2022/07/15 Ruby
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers