Tôi đang tải một tập hợp lớn các tập tin với mã sau đây trong một vòng lặp:làm thế nào để time-out một cách duyên dáng khi tải với python
try:
urllib.urlretrieve(url2download, destination_on_local_filesystem)
except KeyboardInterrupt:
break
except:
print "Timed-out or got some other exception: "+url2download
Nếu máy chủ lần-out trên URL url2download khi kết nối chỉ là bắt đầu , ngoại lệ cuối cùng được xử lý đúng cách. Nhưng đôi khi máy chủ trả lời, và tải được khởi động, nhưng máy chủ như vậy là chậm, mà nó sẽ mất giờ cho dù chỉ một tập tin, và cuối cùng nó sẽ trả về một cái gì đó như:
Enter username for Clients Only at albrightandomalley.com:
Enter password for in Clients Only at albrightandomalley.com:
và chỉ bị treo ở đó (mặc dù không hỏi username/passworde được hỏi nếu cùng một liên kết được tải xuống thông qua trình duyệt).
Ý định của tôi trong trường hợp này sẽ là - bỏ qua tệp này và chuyển đến tệp tiếp theo. Câu hỏi đặt ra là - làm thế nào để làm điều đó? Có cách nào trong python để xác định bao lâu là OK để làm việc trên tải về một tập tin, và nếu có thêm thời gian đã được chi tiêu, gián đoạn, và đi về phía trước?
gì bạn đang nhìn thấy ở đó là máy chủ yêu cầu xác thực. Theo mặc định 'urllib.urlretrieve()' sẽ nhắc người dùng nhập tên người dùng và mật khẩu. Nếu bạn muốn tránh điều này, bạn có thể tạo một lớp mới bắt nguồn từ 'urllib.FancyURLOpener' và tự mình xử lý lỗi này. –