Chúng tôi đang sử dụng phương thức domain.select(), mà boto cung cấp, để truy vấn SimpleDB. Đối với các truy vấn nhỏ hơn (các truy vấn liên quan đến vài giờ dữ liệu), phương thức này hoạt động tốt. Nhưng khi tôi bắt đầu sử dụng nhiều chủ đề và các truy vấn dài hơn (24 giờ kể từ dữ liệu), nó bắt đầu thời gian ra ngoài, đưa ra lỗi sau trên stdout:Làm thế nào để xử lý lỗi yêu cầu thời gian chờ (408) trong boto?
-------------------------
4 0 8
...
<?xml version="1.0"?>
<Response><Errors><Error><Code>QueryTimeout</Code><Message>A timeout occurred when attempting to query domain 'd110824' with query expression 'select * from `d110824` where `timestamp` >= '2011-08-24T10:45:56' and `timestamp` < '2011-08-25T10:45:56' and `identifier` = '00063F052C49' order by `timestamp` asc </Message><BoxUsage>0.0055590278</BoxUsage></Error></Errors><RequestID>....</RequestID></Response>
Tôi muốn thực hiện một cơ chế retry (mũ backoff), khi điều này gặp phải lỗi. Boto không ném bất kỳ ngoại lệ nào cho lỗi này và chỉ cần in nó. Để thực hiện một cơ chế thử lại, tôi cần một số loại mã lỗi hoặc ngoại lệ để biết rằng lỗi đã xảy ra.
Bất kỳ suy nghĩ nào về cách đạt được điều này trong boto?
cảm ơn câu trả lời của bạn. Vâng, nó thử lại trên 503, nhưng không có cách nào để tìm ra, nó làm gì với 408, nó cũng không ném bất kỳ ngoại lệ nào ... boto tài liệu hút người đàn ông. – Sujit
Boto không thử lại trên một phản ứng 408 bởi vì chúng tôi đã được yêu cầu, vài năm trước, không phải bởi AWS. Nếu tài liệu AWS bây giờ nói rằng nó nên được thử lại, sau đó boto nên được thay đổi để thử lại nó. Tôi sẽ đề nghị nộp một vé trên github và tôi sẽ tự chăm sóc nó. – garnaat
BTW, Sujit, bất kỳ cơ hội nào bạn có thể cụ thể hơn về các vấn đề với tài liệu boto? Tôi luôn sẵn lòng nhận đề xuất cải tiến từ cộng đồng. Cảm ơn! – garnaat