一個奇葩的錯誤
- 公司的主項目是17年開始開發,有一個微服務中,用的python的redis客戶端還是2.X的
- 最近公司把所有微服務的py-redis都升級到3.5.x
- 升級之后,整個項目所有功能都運行正常,測試也沒有發現有什么問題
- 兩天有用戶發現有一個服務運行一直失敗,查看日志,在運行任務報了一個錯誤 ERROR Invalid input of type: 'bool'. Convert to a bytes, string, int or float first.
- 因為是一個多層級的函數調用,有多層級的try ,於是一層一層,把try 臨時取消,最后才定位到
- redis.set(key, True)
原因和解決辦法
1.是python-redis 升級到3.x后,僅接受用戶數據為字節、字符串或數字(整數,長整數和浮點數)。
2. 在2.x的時候,可以直接在value中存Python的類型,如字典和數組以及boolean型
3. 解決辦法,修改redis.set(key, 1)