Tôi có ví dụ đơn giản này:Mở nhiều chủ đề với kết quả watir-webdriver trong 'Kết nối từ chối' lỗi
require 'watir-webdriver'
arr = []
sites = [
"www.google.com",
"www.bbc.com",
"www.cnn.com",
"www.gmail.com"
]
sites.each do |site|
arr << Thread.new {
b = Watir::Browser.new :chrome
b.goto site
puts b.url
b.close
}
end
arr.each {|t| t.join}
Mỗi lần tôi chạy kịch bản này, tôi nhận được
ruby/2.1.0/net/http.rb:879:in `initialize': Connection refused - connect(2) for "127.0.0.1" port 9517 (Errno::ECONNREFUSED)
Hoặc một trong những trình duyệt đóng bất ngờ vào ít nhất một trong các chủ đề.
mặt khác, nếu tôi đặt sleep 2
vào cuối mỗi chu kỳ vòng lặp, mọi thứ sẽ chạy trơn tru! Bất kỳ ý tưởng nào về lý do đó?
Phải là một cái gì đó liên quan đến việc tìm hiểu đề làm việc ...
Cảm ơn bạn. Rõ ràng của nó bây giờ. – MichaelR
Vì vậy, tôi đang chạy vào một tình huống tương tự trong khi tôi đang thu thập dữ liệu trang web và khi tôi ném quá nhiều công nhân vào nó, tôi bắt đầu nhận được các lỗi tương tự. Có cách nào để "bảo vệ" kết nối ban đầu giữa trình duyệt và cổng mở, sao cho nó được đảm bảo? Chậm hơn không phải là vấn đề, nhưng ngủ sẽ không hoạt động khi tôi có hàng đợi khổng lồ và lượng thời gian cần thiết để hoàn thành mỗi công việc là hơi ngẫu nhiên .. chắc chắn, tôi sẽ rơi vào vấn đề này .... – kindofgreat
Tôi đoán tôi có thể giữ cho các trình duyệt mở và đi đến các URL mới, intsead mở và đóng một thể hiện trình duyệt cho mỗi URL. Vì vậy, sau đó tôi chỉ có thể có một số công nhân đồng thời, nói 10, và có một khoảng thời gian ngủ đủ dài giữa 10 người đó để bắt đầu, sau đó người lao động là trường hợp trong mười công nhân đó. Không hoàn toàn thanh lịch và phức tạp hơn một chút ... – kindofgreat