Как сделать 25 запросов одновременно с HTTP :: Async в Perl?
============================================================

Я делаю много HTTP-запросов и выбрал HTTP :: Async для этой работы. Я делаю более 1000 запросов и, если я просто сделаю следующее (см. Код ниже), у многих запросов истечет время до их обработки, потому что может пройти десятки минут, прежде чем обработка попадет к ним:

Поэтому я решил делать 25 запросов за раз, но я не могу придумать способ выразить это в коде.

Я попробовал следующее:

Это, однако, не работает хорошо, потому что это слишком медленно в настоящее время. Теперь он ждет, пока все 25 запросов не будут обработаны, пока не добавит еще 25. Поэтому, если у него осталось 2 запроса, он ничего не делает. Я ожидаю обработки всех запросов на добавление следующей партии из 25.

Как я мог улучшить эту логику, чтобы сделать`$async сделайте что-нибудь, пока я обрабатываю записи, но также убедитесь, что они не истекают.

Вы близки, вам просто нужно объединить два подхода! :-)

Не проверено, так что думайте об этом как о псевдокоде. В частности, я не уверен, еслиtotal_count это правильный способ использования, в документации не сказано. Вы также можете просто иметь$active_requests` в противовес этому`++` при добавлении запроса и`--` когда вы получите ответ.



Если вы не можете позвонить`wait_for_next_response` достаточно быстро, потому что вы выполняете другой код, самое простое решение - сделать код прерывистым, переместив его в отдельный поток выполнения. Но если вы собираетесь начать использовать потоки, зачем использовать HTTP :: Async?