Как вы исправляете wget от скачкообразной загрузки данных при запуске нескольких одновременных экземпляров? - PullRequest
1 голос
/ 18 декабря 2010

Я запускаю сценарий, который, в свою очередь, несколько раз вызывает другой сценарий в фоновом режиме с различными наборами параметров.

Вторичный сценарий сначала выполняет wget по URL-адресу ftp, чтобы получить список файлов при этомURL-адрес.Он выводит это в уникальное имя файла.

Упрощенный пример:
Каждый из них вызывается отдельным экземпляром вторичного сценария, работающего в фоновом режиме.

wget --no-verbose 'ftp://foo.com/' -O '/downloads/foo/foo_listing.html' >foo.log

wget --no-verbose 'ftp://bar.com/' -O '/downloads/bar/bar_listing.html' >bar.log

Когда я запускаю дополнительный скрипт по одному, все ведет себя как положено.Я получаю html-файл со списком файлов, ссылками на них и информацией о файлах так же, как при просмотре URL-адреса ftp через браузер.

Продолжение упрощенного по одному (и ожидаемого) примера результатов:

foo_listing.html:

...
<a href="ftp://foo.com/foo1.xml">foo1.xml</a> ...
<a href="ftp://foo.com/foo2.xml">foo2.xml</a> ...
...

bar_listing.html:

...
<a href="ftp://bar.com/bar3.xml">bar3.xml</a> ...
<a href="ftp://bar.com/bar4.xml">bar4.xml</a> ...
...

Когда я многократно запускаю вторичный скрипт в фоновом режиме, некоторые из полученных файлов, хотя и имеют правильные базовые URL-адреса (тот, который был переданв) перечисленные файлы из другого прогона wget.

Продолжение примера примера упрощенной многопроцессорной обработки (и фактического):

foo_listing.html:

...
<a href="ftp://foo.com/bar3.xml">bar3.xml</a> ...
<a href="ftp://foo.com/bar4.xml">bar4.xml</a> ...
...

bar_listing.html
правильно, как указано выше

Как ни странно, все остальные файлы, которые я загружаю, работают нормально.Только эти файлы списков перепутаны.

Текущий обходной путь - установить 5-секундную задержку между фоновыми процессами.Только с этим одним изменением все работает отлично.


Кто-нибудь знает, как это исправить?

Пожалуйста, не рекомендуйте использовать какой-либо другой метод получения файлов списков или одновременного запуска,Я бы хотел знать, как это исправить при использовании wget во многих фоновых процессах, если это возможно.

РЕДАКТИРОВАТЬ:

Примечание:

IЯ не имею в виду вывод статуса, который wget выдает на экран.Меня это не волнует (на самом деле оно также хранится в отдельных файлах журнала и работает правильно).Я имею в виду данные, которые wget загружает из Интернета.

Кроме того, я не могу показать точный код, который я использую, поскольку он является собственностью моей компании.В моем коде нет ничего «неправильного», так как он отлично работает при 5-секундной задержке между фоновыми экземплярами.

1 Ответ

0 голосов
/ 05 января 2011

Регистрируйте ошибку в Gnu, используйте что-нибудь другое, пока возможно, вставляйте временные задержки между параллельными запусками.Возможно создать оболочку для получения списков каталогов ftp, которая позволяет получать только по одному за раз.

: - /

...