Mam od dawna działającą aplikację python, która okresowo (co 30-60 sekund) otwiera stronę internetową z selenem i sterownikiem chrome, uruchamia trochę javascript i wykonuje zrzut ekranu. Działa na instancji ubuntu EC2 z chromem w Xvfb iw przeważającej części wszystko działa, z wyjątkiem sporadycznego zawieszania się programu. Dzieje się to na jednej z tych linii:Chromedriver Selenium się zawiesza?
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);
(nie mam dokładnej linii, ale wiem, ze sprawozdań debugowania Włożyłem w to, że jest gdzieś pomiędzy tutaj)
Niestety, Program się nie psuje, więc nie ma żadnych komunikatów o błędach, tylko czeka bez końca od godziny 19:00. Uruchamianie strace -p 'python program pid'
powroty: wait4(-1,
i działa strace -p 'chromedriver pid'
powraca recvfrom(20,
widzę w ps axjf
że proces nadal działa, jej po prostu nie robi nic. Nie wiem, co mam teraz zrobić, jakieś sugestie?
chromedriver: 2.10.267518
Google Chrome 40.0.2214.111
Selen (zainstalowany z PIP): 2.42.1
#https://github.com/cgoldberg/xvfbwrapper
xvfb = Xvfb(width=1920, height=1920)
xvfb.start()
---- EDIT ----
Właśnie zaktualizowałem do ChromeDriver 2.14.313457
i Selenium 2.44.0
, mam nadzieję, że to rozwiąże problem. Mam zamiar zostawić to na razie otwarte. Dzięki za porady do tej pory chłopaki!
---- EDIT ----
Więc usługa nadal skończyło się na powieszenie. Zastanawiam się, czy to dlatego, że na każdym z nich zamykam i restartuję google-chrome? Czy to prawdopodobnie powoduje wyciek pamięci? Jak mogę to zdiagnozować?
Czy zawiesza się, jeśli opcje chrome nie są określone? Które wersje selenu i chromu stosujesz? – alecxe
Spróbuj również dodać komunikaty dziennika debugowania i zobacz, na którym wierszu jest zawieszany. Pokaż też, jak uruchomić 'xvfb'. Dzięki. – alecxe
zobacz moje zmiany. Kilka razy dodawałem wiadomości do debugowania, ale wydaje mi się, że nie byłem wystarczająco dokładny. – Trevor