Possiedo un'applicazione python con esecuzione prolungata che periodicamente (ogni 30-60 secondi) apre una pagina Web con selenio e driver chrome, esegue alcuni javascript e acquisisce uno screenshot. È in esecuzione su un'istanza di Ubuntu EC2 con Chrome in Xvfb e per la maggior parte tutto funziona, tranne che a intermittenza il programma si bloccherà. Sta accadendo su una di queste linee:Si blocca selenio Chromedriver?
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);
(non ho una linea esatta, ma so per istruzioni di debug ho messo nel senso che è da qualche parte tra qui)
Purtroppo, la il programma non si blocca in modo tale che non abbia alcun messaggio di errore, è solo in attesa all'infinito dalle 7 di sera della scorsa notte. Esecuzione strace -p 'python program pid'
ritorni: wait4(-1,
e funzionante strace -p 'chromedriver pid'
ritorna recvfrom(20,
posso vedere in ps axjf
che il processo è ancora in esecuzione, la sua non solo di fare qualsiasi cosa. Sono una specie di perdita di cosa fare ora, qualche suggerimento?
chromedriver: 2.10.267518
Google Chrome 40.0.2214.111
Selenio (installato con pip): 2.42.1
#https://github.com/cgoldberg/xvfbwrapper
xvfb = Xvfb(width=1920, height=1920)
xvfb.start()
---- ---- EDIT
Mi sono appena aggiornato a ChromeDriver 2.14.313457
e Selenium 2.44.0
, si spera che questo risolva il problema. Ho intenzione di lasciarlo aperto per ora. Grazie per il consiglio finora ragazzi!
---- ---- EDIT
Quindi il servizio ancora finito per impiccagione. Mi chiedo se questo è perché per ogni screenshot chiudo e riavvio google-chrome? Questo potrebbe causare una perdita di memoria in qualche modo? Come potrei diagnosticare questo?
Si blocca se non vengono specificate le opzioni chrome? Quali versioni di selenio e cromo stai usando? – alecxe
Inoltre, provare ad aggiungere messaggi di log di debug e vedere su quale linea è sospesa. Inoltre, mostra come si avvia 'xvfb'. Grazie. – alecxe
vedi le mie modifiche. Ho aggiunto messaggi di debug nelle poche volte in cui ciò è accaduto, anche se suppongo di non essere stato abbastanza completo. – Trevor