2013-05-22 46 views
7

Tôi đang chạy trong chế độ phantomjs WebDriver từ xa với phantomjs --webdriver 8910 và sau đó nhận được nhiều trang sử dụng các ràng buộc Selenium python với một cái gì đó như:Hạn chế sử dụng bộ nhớ của các phantomj bằng cách sử dụng selenium webdriver?

wd = webdriver.PhantomJS(port=8910) 
for url in big_url_list: 
    wd.get(url) 
    # do something here, e.g. wd.save_screenshot or print wd.page_source 
    wd.quit() 

Các wd.quit() dường như không làm gì cả. Giám sát quá trình với các chương trình hàng đầu cho thấy việc sử dụng bộ nhớ của quá trình phantomjs tiếp tục tăng khi có nhiều trang được truy xuất. Nếu tôi khởi động lại quá trình phantomjs, thì việc sử dụng bộ nhớ giảm xuống thấp và bắt đầu lại tăng lên một cách ổn định.

close method mentioned in the phantomjs docs có vẻ đầy hứa hẹn, nhưng tôi không thấy cách nào để gọi điều đó qua số WebDriver protocol.

Có (i) cách để sử dụng bộ nhớ ảo khi thực hiện nhiều yêu cầu hay (ii) một cách đáng tin cậy để theo dõi và định kỳ khởi động lại quá trình phantomjs sao cho bộ nhớ không bị mất?

Trả lời

1

Phương thức đóng trang web PhantomJS chỉ bằng Ghostdriver khi bạn đóng phiên WebDriver. Bạn có thể thử sử dụng runit để khởi động lại PhantomJS khi đạt đến giới hạn bộ nhớ. Tạo tập lệnh bash như sau:

#!/bin/sh 
exec 2>&1 
exec chpst -u your_user -m 104857600 /usr/bin/phantomjs --webdriver=8910 

- cờ đặt giới hạn bộ nhớ thành 100MB.

Nơi ở trên kịch bản theo một số thư mục trống với tên "chạy":

| 
`-phantomjs-runit-+ 
        `-run 

Bây giờ bạn có thể bắt đầu phantomjs

sv start ./phantomjs-runit/ 
Các vấn đề liên quan