由IIS启动的Python进程在一段时间后停止运行

时间:2018-08-26 10:12:54

标签: php python iis-8 windows-server-2016

我写了一个python脚本,该脚本正在收集来自给定网页的链接。您可以在下面找到代码段。 (但我认为这不是编码问题)。

当我在命令行中(具有管理员权限)执行脚本时,一切都按预期方式工作,但是当我从PHP运行脚本时,它会在大约30分钟后停止运行,而没有任何异常。对我来说,Windows Server 2016在一段时间后({IIS 1用户没有管理员权限的情况下启动了)进程正在杀死python进程。

有什么主意如何告诉Windows / IIS不要终止python进程?

这就是我从PHP调用脚本的方式:

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

我尝试了python.exepythonw.exe。该脚本正常启动,但在30分钟后停止。

def getAllLinksOnCurrentPage():
elems = driver.find_elements_by_xpath("//a[@href]")
for elem in elems:
    f = elem.get_attribute("href")
    if testurl in f:
        if f not in linkcollector:
            linkcollector.append(f)


try:
    driver.get(testurl)

    for currentpage in linkcollector:
        driver.get(currentpage)
        getAllLinksOnCurrentPage()


    #Write all URLs to Logfile
    with open('C:\Scripts\Logfiles\\Logfile.txt', "a") as file:
        for currentpage in linkcollector:
            file.write("\n%s" %currentpage)

except Exception as e:
    #Catch Unknown Exception
    with open('C:\Scripts\Logfiles\\'+str(testrun)+'_Logfile.txt', "a") as file:
        file.write("\n Unknown Exception: " %str(e))

感谢所有输入,谢谢!

2 个答案:

答案 0 :(得分:1)

我自己找到的解决方案:

IIS->选择服务器->默认应用程序池->高级设置->将0设置为“空闲超时”和“正常时间间隔”

答案 1 :(得分:0)

它可能与max-execution-time有关-终止脚本之前允许运行脚本的最长时间(以秒为单位)。

您可以通过编辑php.ini或调用set-time-limit

来更改此属性。