2013-04-23 3 views
0

Я запускаю много заданий через capybara на моем Linux-сервере. Я использую драйвер poltergeist phantomjs. Через некоторое время я получаю много этих ошибок:Правильный способ закрыть capybara (with poltergeist/phantomjs)

Errno::EMFILE Too many open files - socket(2) 

Я смотрел в lsof и он выглядит как у меня есть много из них:

ruby  32316 deployer 320u  IPv4 9893211  0t0  TCP localhost:55062 (LISTEN) 

Теперь я буду подозревать, что это может потому что я не правильно закрываю соединение?

Что бы правильный способ прекращения после запуска что-то вроде следующего:

Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, {:js_errors => false}) 
end 

Capybara.current_driver = :poltergeist 
Capybara.javascript_driver = :poltergeist 
Capybara.run_server = false 

@session = Capybara::Session.new(:poltergeist) 
@session.visit('some_url') 

ответ

5

Вы можете запустить @session.driver.quit.

+0

Но вы уверены, что прекратит соединение TCP? –

+0

Я не уверен, но это должно быть. Я призываю вас попробовать. – jonleighton

+0

Хорошо, что это помогло, по-моему, в TCP-соединениях, но я все еще получаю ошибку, однако теперь я вижу их много в 'lsof':' ruby ​​19441 deployer 137w REG 9,3 1895691531 57021609/home/deployer/apps/autouncle/shared/log/sidekiq.log ruby ​​19441 deployer 138r FIFO 0,8 0t0 11683098 труба рубин 19441 развёртыватель 139w FIFO 0,8 0t0 11683098 труба –

Смежные вопросы