Debug Manticoresearch API for Python

Sửa lỗi invalid continuation byte khi dùng Manticoresearch cho Python

Từ khi phải tạo lại cơ sở dữ liệu cho ngữ liệu của Dự án S, thỉnh thoảng khi tìm ngữ liệu thì website báo lỗi 500. Có lúc thì bị lỗi ngay trang kết quả đầu tiên, lúc thì bị ở trang khác.

Bật debug thì thấy báo lỗi kiểu như này:

'utf-8' codec can't decode bytes in position 27501-27502: invalid continuation byte

Chi tiết hơn:

Debug Manticoresearch API for Python

Tìm đến dòng 205 của api_client.py thì thấy là nó áp dụng phương thức decode với dữ liệu tìm được:

response_data.data = response_data.data.decode(encoding)

Thế tức là trong cơ sở dữ liệu thỉnh thoảng có bài chứa dữ liệu bị lỗi gì đó liên quan tới bảng mã. Bây giờ mà rà soát lại hàng triệu bài thì chết.

Anh thử thử Google xem có ai gặp vấn đề này không. Nhưng có lẽ Manticoresearch ít người dùng nên chả thấy gì.

Hiện tại, tham số error của hàm decode đang để mặc định, tức là gặp lỗi sẽ báo. Anh thử chuyển thành ignore để bỏ qua:

response_data.data = response_data.data.decode(encoding, 'ignore')

Khởi động lại ứng dụng, máy chủ không báo lỗi 500 nữa, còn kết quả thì hiện ra đầy đủ 20 bài/trang như không có chuyện gì.

Thôi thì chấp nhận sửa trực tiếp vào API và viết bài này để sau này có cập nhật gói thì còn biết đường mà vá lỗi :p