IOError: [Errno 0] Error on write() in tee.TeeInput._tee
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 1/5
- Thời gian dự kiến
- Dưới một giờ
- Mức phù hợp với người mới
- 52/100
Hướng nghiên cứu
Mã bị ảnh hưởng nằm trong tee.py, quanh dòng 154; trước tiên hãy đọc TeeInput._tee và luồng đọc/ghi của TemporaryFile. Chạy bản tái hiện unittest được cung cấp với một tệp HTML lớn hơn 45 KB, sau đó xác nhận rằng các thao tác readline và flush lặp lại không còn gây ra IOError với Errno 0.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
In very rare circumstances, the write() on the TemporaryFile files with an IOError, but no error code. I tracked the bug down to the following: When using a file object with read and write mode, then you have to flush or seek, when switching between reading and writing (see http://bugs.python.org/issue3207).
To fix this here, simply reset the filestream pointer by seeking to the position returned by tell(). More specifically, in tee.py:154 add self.tmp.seek(self.tmp.tell()).
If you want to reproduce the error yourself, use the following script. The html file needs to be bigger than two chunk sizes (32KB), so a file with 45 KB should do the trick.
import unittest
from restkit.tee import TeeInput
import os
import tempfile
class TempfileErrorCase(unittest.TestCase):
def test_ioerror(self):
with open("/path/to/large/html/file", "rb") as f:
i = TeeInput(f)
for _ in range(200):
i.readline()
i.tmp.flush()
def tearDown(self):
os.remove(self.tmpfile.name)
# Guard importing as main module
if __name__ == "__main__":
unittest.main()
- Ngôn ngữ chính
- Python
- Star
- 402
- Fork
- 69
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của benoitc/restkit
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 35/100
-
Documentation for forms.pyĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 35/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
-
Bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
-
Doesn't Validate TLSĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
Tất cả issue của benoitc/restkit
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 80/100
-
area:other help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
WingedGuardian/GENesis-AGI#4734 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
peach-mitao/peach#693 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Failed result serialization destroys a previously saved JSON resultCó thể đã có người làm @chessing234 đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
huggingface/evaluate#867 ·
-
FTP reads inside a transaction use a nonexistent staging pathCó thể đã có người làm @Harsh23Kashyap đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
fsspec/filesystem_spec#2463 ·
Maintainer thường phản hồi trong vòng 1 ngày