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