0

所以我认为我只是从根本上做错了什么,但这是我正在做的一个基本示例

some variables here
some code here to run once

def runfirst():
    do some stuff
    runsecond()
def runsecond():
    do some different stuff
    runthird():
def runthird():
    do some more stuff
    runfirst():
runfirst()

所以它基本上在一开始就提取了我需要的一些信息,然后运行了 3 个不同的变量。我正在做的是从数据库中提取信息,然后查看数据库上的一些计数,如果这些计数中的任何一个在一段时间内超过一定数量,它就会发送电子邮件。这是出于监控目的,我需要它一直运行。我得到的问题是,它一直在运行,在后台抛出错误,如“文件”asdf.py“,行等等,在第一次运行”

我认为它在抱怨,因为它看到我正在循环遍历函数,但是对于我需要做的事情,它工作得很好,除了错误,并且由于超出了最大递归深度而最终杀死了我的脚本。有什么帮助吗?

4

2 回答 2

3

你在这里有无限递归。因为您调用runfirstfrom runthird,所以它会越来越深,并且没有任何函数返回。您可能需要考虑将这些函数放在一个while True循环中,而不是相互调用它们。

def runfirst():
    do some stuff
def runsecond():
    do some different stuff
def runthird():
    do some more stuff

while True:
    runfirst()
    runsecond()
    runthird()
于 2013-10-03T15:16:33.103 回答
1

你不是在循环。

您正在调用一个函数,该函数调用另一个函数,该函数调用第三个函数,该第三个函数调用第一个函数,该第二个函数调用第二个函数,该第三个函数再次调用第一个函数……依此类推,直到堆栈溢出。

于 2013-10-03T15:14:50.450 回答