Я работаю над базовым сканером, который одновременно сканирует 5 веб-сайтов, используя потоки. Для каждого сайта создается новая ветка. Когда я запускаю программу из оболочки, журнал вывода указывает, что все 5 потоков работают, как и ожидалось. Но когда я запускаю эту программу как программу supervisord, журнал показывает, что каждый раз запускаются только 2 потока! В журнале указано, что все 5 потоков запущены, но выполняются только те же два из них, а остальные зависают. Я не могу понять, почему это несоответствие происходит, когда он запускается из оболочки и когда он запускается из супервизора. Я что-то не учитываю?
Вот код, который создает потоки:
for sid in entries:
url = entries[sid]
threading.Thread(target=self.crawl_loop, \
args=(sid, url)).start()
ОБНОВЛЕНИЯ: Как предложил tdelaney в комментариях, я изменил рабочий каталог в конфигурации супервизора, и теперь все потоки выполняются, как и ожидалось. Хотя я до сих пор не понимаю, почему установка рабочего каталога в каталог файлов искателя устраняет проблему. Возможно, кто-то, кто знает, как супервизор управляет процессами, может объяснить?