а ссылку на пример поиграться? 09.10.2013, 07:26, "ksvs" <[email protected]>: > Есть приложение, в котором главный процесс и дочерние общаются между собой по > сокетам, используя EV модуль. > Дочерние процессы получают информацию от главного, делают HTTP запросы, > анализируют и возвращают результат главному. В дочерних процессах запросы > идут параллельно с использованием либо Net::Curl::Multi, либо AnyEven::HTTP. > > Все было отлично, пока не понадобилось в главном процессе перед fork, сделать > HTTMP запрос. LWP использовать можно, но не хочется. > Используемые варианты: > 1. Делаем первый запрос при помощи AnyEven::HTTP, дочерние работают с Curl - > все отлично. Это для проверки. > 2. Делаем первый запрос при помощи AnyEven::HTTP на несуществующий адрес, > дочерние работают с AnyEven::HTTP - все нормально. > 3. Делаем первый запрос при помощи AnyEven::HTTP на существующий адрес, > работа AnyEven::HTTP в дочерних процессах зависает. При этом общение между > процессами идет: гонял ping для подтверждения того, что EV не завис и система > коммуникаций между процессами жива. > > Может кто-то сталкивался с таким поведением AnyEven::HTTP? > > Сделал максимально простой вариант для теста. > В нем с первоначальным вызовом AnyEven::HTTP, в дочернем процессе > AnyEven::HTTP, стал работать, но очень-очень медленно. Точнее все зависит от > того, как карты лягут: без первого вызова время выполнения 1,24 секунды, а с > первым - может быть 21 секунд, а может быть 5 секунд. > > Но ведь с Curl работает отлично. Значит дело не в EV, а в AnyEven::HTTP. > Для подтверждения этого вместо первого вызова AnyEven::HTTP, сделал просто > открытие сокета, EV::WRITE, EV::READ - все работает отлично. > > AnyEven::HTTP настраивал, чтобы он закрывал все сокеты. Это перед форком. Да > и делается ведь EV::break перед форком. > > Интересно понять причину этого. > > , > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org
-- С уважением Николай Мишин -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
