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:
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