Python进阶_wxpy学习:异常chu'li
目錄:
- 目錄:
- 前言
- 異常處理
- 異常的拋出和捕捉
- 已知錯(cuò)誤碼
- 注意
前言
學(xué)習(xí)完了python的基本概念和相應(yīng)操作后,就要進(jìn)入實(shí)戰(zhàn)階段了,首先選的是和微信端口自動(dòng)交互的wxpy。
本文操靠wxpy的官方文檔:官方文檔
機(jī)器人對(duì)象可以參考前文:機(jī)器人對(duì)象
聊天對(duì)象可以參考前文:聊天對(duì)象
消息處理可以參考前文:消息處理
微信監(jiān)控可以參考前文:微信監(jiān)控
探索調(diào)試可以參考前文:探索調(diào)試
實(shí)用組件可以參考前文:實(shí)用組件
異常處理
異常的拋出和捕捉
每當(dāng)使用 wxpy 向微信發(fā)出請(qǐng)求 (例如發(fā)送消息、加好友、建群等操作),wxpy 都會(huì)在收到服務(wù)端響應(yīng)后進(jìn)行檢查。
若響應(yīng)中的錯(cuò)誤碼不為 0,程序?qū)伋?ResponseError 異常。
class wxpy.ResponseError(err_code, err_msg)[源代碼]當(dāng) BaseResponse 的返回值不為 0 時(shí)拋出的異常err_code錯(cuò)誤碼 (int)err_msg錯(cuò)誤消息 (文本),但可能為空捕捉異常:
try:# 嘗試向某個(gè)群?jiǎn)T發(fā)送消息group.members[3].send('Hello') except ResponseError as e:# 若群?jiǎn)T還不是好友,將拋出 ResponseError 錯(cuò)誤print(e.err_code, e.err_msg) # 查看錯(cuò)誤號(hào)和錯(cuò)誤消息已知錯(cuò)誤碼
通常來(lái)說(shuō),每個(gè)錯(cuò)誤碼表示一種類(lèi)型的錯(cuò)誤。
但因微信未公開(kāi) (也沒(méi)有義務(wù)公開(kāi)) 這套錯(cuò)誤碼體系的具體說(shuō)明,我們只能根據(jù)經(jīng)驗(yàn)猜測(cè)部分錯(cuò)誤碼的定義。
以下為一些常見(jiàn)的已知錯(cuò)誤碼。歡迎提交 PR 進(jìn)行完善。
“`
1205
通常因?yàn)椴僮黝l率過(guò)高。需要控制頻率,避免再次引起該錯(cuò)誤。
注意
Web 微信對(duì) 加好友、建群 這兩種操作的頻率限制尤其嚴(yán)格!
對(duì)于微信而言,為了機(jī)器人避免打擾其他用戶,以及控制服務(wù)器的負(fù)載壓力,需要對(duì)各種不同的操作進(jìn)行頻率限制。
通常每種操作可有多層頻率限制,而每層頻率限制分為兩個(gè)參數(shù):
周期、次數(shù),分布表示: 在 x 周期內(nèi),只能發(fā)送 y 個(gè)請(qǐng)求。舉個(gè)例子:
對(duì)于 發(fā)送消息 操作,可能會(huì)是這樣 (數(shù)值為虛構(gòu)):層 限制周期 限制次數(shù)1 2 分鐘 1202 10 分鐘 3003 1 小時(shí) 10004 24 小時(shí) 2000可能會(huì)有用戶在 1 分鐘內(nèi)狂發(fā) 100 條消息。但這樣的頻率不可能維持一整天,所以一天內(nèi) 3000 條是足夠的。通過(guò)以上方式,微信可實(shí)現(xiàn)較為合理的限制。1204
通常因?yàn)椴僮鲗?duì)象不為好友關(guān)系。例如嘗試向一位不為好友的群?jiǎn)T發(fā)送消息時(shí),會(huì)引起這個(gè)錯(cuò)誤。
1100, 1101, 1102
通常表示機(jī)器人已經(jīng)掉線,需要重新登錄。
請(qǐng)重新初始化 Bot 對(duì)象,并重新注冊(cè)消息。
因?yàn)橹匦碌卿浐?#xff0c;聊天對(duì)象的 user_name 可能已經(jīng)變化,所以原先的消息注冊(cè)也會(huì)因此失效。總結(jié)
以上是生活随笔為你收集整理的Python进阶_wxpy学习:异常chu'li的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java oracle to date_
- 下一篇: python list tuple 消耗