萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> 使用rpclib進行Python網絡編程時的注釋問題

使用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>

 

       難怪一遇到中文注釋就會出錯!

        注< >:更多精彩教程請關注三聯編程

copyright © 萬盛學電腦網 all rights reserved