使用rpclib進行Python網路編程時的注釋問題
這篇文章主要介紹了使用rpclib進行Python網路編程時的注釋問題,作者講到了自己在編寫伺服器時要用unicode注釋等需要注意的地方,需要的朋友可以參考下
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
我檢查了代碼,對比了之前可以工作的版本,發現並沒有什麼不對的地方。
?
|
1
2
3
4
5
6
7
8
9 |
@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>
難怪一遇到中文注釋就會出錯!
注< >:更多精彩教程請關注幫客之家編程