使用rpclib进行Python网络编程时的注释问题
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文件去除注释的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python # -*- coding: GBK -*- #writer:xmnathan #py文件去注释 import re import os import ConfigParser Python='CleanNote' def ReadIni(path,section,option):#文件路径,章节,关键词 #读取ini cf=ConfigParser.ConfigParser
-
python 中文乱码问题深入分析
在本文中,以'哈'来解释作示例解释所有的问题,"哈"的各种编码如下: 1. UNICODE (UTF8-16),C854: 2. UTF-8,E59388: 3. GBK,B9FE. 一.python中的str和unicode 一直以来,python中的中文编码就是一个极为头大的问题,经常抛出编码转换的异常,python中的str和unicode到底是一个什么东西呢? 在python中提到unicode,一般指的是unicode对象,例如'哈哈'的unicode对象为 u'\u54c8
-
在Python的Django框架中为代码添加注释的方法
就像HTML或者Python,Django模板语言同样提供代码注释. 注释使用 {# #} : {# This is a comment #} 注释的内容不会在模板渲染时输出. 用这种语法的注释不能跨越多行. 这个限制是为了提高模板解析的性能. 在下面这个模板中,输出结果和模板本身是 完全一样的(也就是说,注释标签并没有被解析为注释): This is a {# this is not a comment #} test. 如果要实现多行注释,可以使用`` {% comment %}`` 模板标
-
Pyhton中单行和多行注释的使用方法及规范
前言 注释可以起到一个备注的作用,团队合作的时候,个人编写的代码经常会被多人调用,为了让别人能更容易理解代码的通途,使用注释是非常有效的. Python 注释符 一.python单行注释符号(#) 井号(#)常被用作单行注释符号,在代码中使用#时,它右边的任何数据都会被忽略,当做是注释. print 1 #输出1 #号右边的内容在执行的时候是不会被输出的. 二.批量.多行注释符号 在python中也会有注释有很多行的时候,这种情况下就需要批量多行注释符了.多行注释是用三引号''' '''包
-
python3新特性函数注释Function Annotations用法分析
本文分析了python3新特性函数注释Function Annotations用法.分享给大家供大家参考,具体如下: Python 3.X新增加了一个特性(Feature),叫作函数注释 Function Annotations 它的用途虽然不是语法级别的硬性要求,但是顾名思义,它可做为函数额外的注释来用. Python中普通的函数定义如下: def func(a, b, c): return a + b + c >>> func(1, 2, 3) 6 添加了函数注释的函数会变成如下形式
-
Python入门教程 超详细1小时学会Python
为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是bash而Windows是批处理脚本).例如,在Windows上用ping ip 的命令依次测试各个机器并得到控制台输出.由于ping通的时候控制台文本通常是"Reply from ... " 而不通的时候文本是"time out ... " ,所以,在结果中进行
-
Python中的多行注释文档编写风格汇总
什么是docstring 在软件工程中,其实编码所占的部分是非常小的,大多是其它的事情,比如写文档.文档是沟通的工具. 在Python中,比较推崇在代码中写文档,代码即文档,比较方便,容易维护,直观,一致. 代码写完,文档也出来了.其实Markdown也差不多这种思想,文本写完,排版也完成了. 看看PEP 0257中对docstring的定义: A docstring is a string literal that occurs as the first statement in a modu
-
Python注释详解
注释用于说明代码实现的功能.采用的算法.代码的编写者以及创建和修改的时间等信息. 注释是代码的一部分,注释起到了对代码补充说明的作用. Python注释 Python单行注释以#开头,单行注释可以作为单独的一行放在被注释的代码行之上,也可以放在语句或者表达式之后. #Give you a chance to let you know me print("Give you a chance to let you know me") say_what = "this is a d
-
Python实现多行注释的另类方法
Python程序的注释感觉很不合群,对于习惯了使用/**/多行注释的人来说,到Python中只能使用#号进行单行注释很痛苦. 复制代码 代码如下: # 这里是单行注释 # a = 50 # b = 10 # c = 10 其实我们可以通过多行文本定义的格式实现多行注释: 复制代码 代码如下: """ # 这里是多行注释 a = 50 b = 10 c = 10 """ 这个方法感觉还不错,跟/**/多行注释用起来没
-
python访问类中docstring注释的实现方法
本文实例讲述了python访问类中docstring注释的实现方法.分享给大家供大家参考.具体分析如下: python的类注释是可以通过代码访问的,这样非常利于书写说明文档 class Foo: pass class Bar: """Representation of a Bar""" pass assert Foo.__doc__ == None assert Bar.__doc__ == "Representation of a B
随机推荐
- Angular页面间切换及传值的4种方法
- Python使用getpass库读取密码的示例
- js/jq仿window文件夹框选操作插件
- 怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
- php+xml实现在线英文词典之添加词条的方法
- PHP登录(ajax提交数据和后台校验)实例分享
- 用PHP编写PDF文档生成器
- python实现连接mongodb的方法
- C语言找出数组中的特定元素的算法解析
- Android应用中使用SharedPreferences类存储数据的方法
- PHP实现图片的等比缩放和Logo水印功能示例
- Mysql的longblob字段插入数据问题解决
- wamp5是什么 wamp有什么用途?
- JQuery操作元素的css样式
- Powershell小技巧之查询AD用户
- ORACLE 11g安装中出现xhost: unable to open display问题解决步骤
- JavaScript自定义DateDiff函数(兼容所有浏览器)
- 删除Javascript Object中间的key
- jquery带翻页动画的电子杂志代码分享
- jQuery的animate函数实现图文切换动画效果