2016-04-18 2 views
2

Ich verwende den Selenium PhantomJS-Webdriver in einer Sellerie-Warteschlange mit zwei gleichzeitigen Arbeitern.Zu viele PhantomJS-Prozesse

Während ich nur zwei gleichzeitige Arbeiter habe, bekomme ich im Aktivitätsmonitor oft 50 PhantomJS-Prozesse mit einem riesigen Speicherbedarf. Diese Prozesse scheinen nicht richtig zu schließen, selbst wenn ich die Methode driver.quit() anrufe.

Mein Code sieht wie folgt aus:

class Scrape: 
    def __init__(self): 
     self.driver = webdriver.PhantomJS() 
     self.driver.implicitly_wait(10) 
     self.driver.set_window_size(1280, 800) 

    def __enter__(self): 
     return self 

    def __exit__(self, exc_type, exc_value, traceback): 
     self.driver.quit() 

Ich verwende dies mit der with Anweisung ordnungsgemäße Bereinigung zu gewährleisten. Aber es scheint nicht zu funktionieren. Irgendwelche Ideen, wie man das verbessert?

+0

hast du das gesehen: https://github.com/detro/ghostdriver/issues/162, und zwar die letzten 2 Kommentare: "Dieses Problem wird auftreten, wenn phantomjs mit npm installiert wird", also schlagen sie vor, es mit etwas zu installieren sonst (apt-get/homebrew) –

+0

@KirilS. Vielleicht möchten Sie das als Antwort schreiben, da das Problem tatsächlich gelöst wurde! Vielen Dank! – Ben

+0

sicher, tat. Froh, dass es geholfen hat –

Antwort

3

Nach this issue, nämlich letzten 2 Kommentare,

dieses Problem passieren wird, wenn PhantomJS mit NPM installiert ist

So schlagen sie es etwas zum Installieren sonst (apt-get/Homebrew).