Я запускаю сценарий, который, в свою очередь, несколько раз вызывает другой сценарий в фоновом режиме с различными наборами параметров.
Вторичный сценарий сначала выполняет 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-секундной задержке между фоновыми экземплярами.