Member 13961862 Ответов: 2

Процесс Python, запущенный IIS, перестает работать через некоторое время


Привет, спасибо за чтение!

Я написал скрипт на Python, который собирает ссылки с данной веб-страницы. Вы можете найти фрагмент кода ниже. (но я думаю, что это не проблема кодирования)

Когда я выполняю скрипт в командной строке (с правами администратора), все работает так, как ожидалось, но когда я запускаю скрипт из PHP, он просто перестает работать через ~30 минут без каких-либо исключений. Для меня это выглядит так, что Windows Server 2016 убивает процесс python через определенное время. (процесс запускается пользователем IIS без прав администратора)

***Есть идеи, как сказать Windows/IIS, чтобы он не убивал процесс python?***

Вот как я называю скрипт из PHP:

команда $ = 'C:\\Scripts\\myscript.py C:\\Python36\\python.exe ';
pclose(popen("start /B ".$command, "w"));

Я пробовал оба python.exe и pythonw.exe
Сценарий запускается нормально, но останавливается примерно через 30 минут.

деф getAllLinksOnCurrentPage():
elems = driver.find_elements_by_xpath("//a[@href]")
за Элем в элемс:
Ф = Элем.get_attribute("слишком")
если проверить URL-адрес в Ф:
если f не в linkcollector:
linkcollector.добавление(Ф)


пробовать:
водитель.узнать(проверить URL-адрес)

для currentpage в linkcollector:
driver.get(currentpage)
getAllLinksOnCurrentPage()


#Запись всех URL-адресов в файл журнала
с открытым('C:\Scripts\Logfiles\\Logfile.txt', "а") как файл:
для currentpage в linkcollector:
файл.write ("\n%s" %currentpage)

кроме исключения как e:
#Поймать Неизвестное Исключение
с Open('C:\Scripts\Logfiles\\'+ул(тестовый прогон)+'_Logfile.txt', "а") в виде файла:
файл.write("\n неизвестное исключение: "%str(e))

Каждый вклад ценится, спасибо!

Что я уже пробовал:

- python.exe -> Свойства -> Запуск от имени администратора

2 Ответов

Рейтинг:
18

Dave Kreskowiak

Службы IIS будут убивать и перерабатывать процесс, который сидит без дела слишком долго. Это включает в себя все дочерние процессы, запущенные вашим процессом IIS.

То, что вы должны были сделать, это написать свой процесс Python не как что-то начатое кодом веб-сайта, а как службу Windows. Служба работает независимо от кода веб-сайта и не подчиняется политикам и процедурам IIS.


Рейтинг:
0

Member 13961862

Решение нашел сам:

ИИС-и GT; выберите сервер -и gt; Приложения по умолчанию бассейн -и gt; Дополнительные параметры -&ГТ; если значение 0, то "время простоя" и "регулярный промежуток времени"