rpclib 是一個非常好用的 python webservice 庫,可以動態(tài)的生成 wsdl, 不過這個項(xiàng)目已經(jīng)基本停止,并被一個新的項(xiàng)目取代 spyne,由于舊的項(xiàng)目 工作已經(jīng)比較穩(wěn)定,所以我沒有貿(mào)然升級到 spyne。
我在 rpclib 編寫 service 方法時,遇到一個奇怪的錯誤: 訪問 wsdl (http://localhost:9898/?wsdl) 頁面,返回 502 Bad Gateway。
在日志中看到如下錯誤信息:
我檢查了代碼,對比了之前可以工作的版本,發(fā)現(xiàn)并沒有什么不對的地方。
1
2
3
4
5
6
7
8
9
|
@srpc (RequestModel, _returns = Unicode ) def shenzhen(request): """ 根據(jù)傳入的token、車牌號及車駕號,以及驗(yàn)證碼 查詢該車輛的違章記錄 """ logging.info(request) query = ShenZhenQuery(request) return query.query_car_records() |
但就是沒有正確生成 wsdl,后來我刪除了方法內(nèi)所有的內(nèi)容(包括注釋),只留下一條返回 unicode 字符串的語句,然后就工作正常了,但是當(dāng)我加入了方法的文檔注釋后,又出來了之前的錯誤,于是我 懷疑到了注釋上:中文的注釋,卻沒有使用 unicode 字符串,于是使用 u"" 中文注釋 """ 后,一切正常!
查看生成的 wsdl,發(fā)現(xiàn)原來原來 rpclib 使用注釋生成了
根據(jù)傳入的token、車牌號及車駕號,以及驗(yàn)證碼 查詢該車輛的違章記錄
難怪一遇到中文注釋就會出錯!