Tôi có một ứng dụng python chạy dài sẽ định kỳ (mỗi 30-60 giây) mở một trang web với trình điều khiển selen và chrome, chạy một số javascript và chụp ảnh màn hình. Nó chạy trên một phiên bản EC2 ubuntu với chrome trong Xvfb và cho hầu hết mọi thứ mọi thứ đang hoạt động, ngoại trừ liên tục chương trình sẽ treo. Nó đang xảy ra trên một trong những dòng này:Selenium Chromedriver Hangs?
options = Options()
options.add_argument("--disable-web-security")
options.add_argument("--webdriver-logfile=webdrive.log")
dc = DesiredCapabilities.CHROME
dc['loggingPrefs'] = {'browser': 'ALL'}
driver = webdriver.Chrome(chrome_options=options, desired_capabilities=dc)
driver.get(url);
(Tôi không có một dòng chính xác nhưng tôi biết từ báo cáo debug Tôi đã đặt ở chỗ nó là nơi nào đó ở giữa đây)
Thật không may, chương trình không sụp đổ nên nó không có bất kỳ thông báo lỗi nào, nó chỉ chờ đợi không ngừng kể từ 7 giờ tối tối qua. Chạy strace -p 'python program pid'
lợi nhuận: wait4(-1,
và chạy strace -p 'chromedriver pid'
lợi nhuận recvfrom(20,
tôi có thể nhìn thấy trong ps axjf
rằng quá trình này vẫn chạy, nó chỉ là không làm gì cả. Tôi sắp bị mất việc phải làm bây giờ, có đề nghị gì không?
chromedriver phiên bản: 2.10.267518
Google Chrome 40.0.2214.111
Selenium (cài đặt với pip): 2.42.1
#https://github.com/cgoldberg/xvfbwrapper
xvfb = Xvfb(width=1920, height=1920)
xvfb.start()
---- EDIT ----
Tôi vừa cập nhật thành ChromeDriver 2.14.313457
và Selenium 2.44.0
, hy vọng điều này sẽ khắc phục được sự cố. Tôi sẽ để cái này mở ngay bây giờ. Cảm ơn lời khuyên cho đến nay guys!
---- CHỈNH SỬA ----
Vì vậy, dịch vụ vẫn kết thúc treo. Tôi tự hỏi nếu điều này là bởi vì cho mỗi ảnh chụp màn hình tôi đóng và khởi động lại google-chrome? Điều này có thể gây ra rò rỉ bộ nhớ bằng cách nào đó không? Làm thế nào tôi có thể chẩn đoán điều này?
Ứng dụng có treo nếu tùy chọn chrome không được chỉ định không? Bạn đang sử dụng phiên bản selen và chrome nào? – alecxe
Ngoài ra, hãy thử thêm thông báo nhật ký gỡ lỗi và xem dòng nào đang treo. Ngoài ra, hãy chỉ cho bạn cách bắt đầu 'xvfb'. Cảm ơn. – alecxe
xem các chỉnh sửa của tôi. Tôi đã thêm thông báo gỡ lỗi trong vài lần điều này đã xảy ra, mặc dù tôi đoán tôi chưa đủ kỹ lưỡng. – Trevor