我有3个功能。 listener
函数每隔10秒调用check_url
函数。如果此函数在检查时成功,则调用destroy
函数。在destroy
函数完成它的工作后,我想终止listener
我尝试使用finish_control
变量
def listener(url):
while True:
if finish_control == 1:
break
check_url(url)
sleep(10)
def check_url(url):
print ("Status: Listening")
response = urllib.request.urlopen(url)
data = response.read()
text = data.decode('utf-8')
if text == '1':
print("--Action Started!--")
destroy(argv.location)
def destroy(location):
#some work
print("---Action completed!---")
finish_control = 1
但listener
内的while循环不会终止。我也试过
while (finish_control == 0):
也有同样的问题。在destroy
完成工作后如何让它停止?
答案 0 :(得分:3)
确保全局定义finish_control
,并在destroy
函数中添加以下内容:
global finish_control
答案 1 :(得分:3)
问题是finish_control
函数destroy
是函数的本地函数。 finish_control
中的listener
不是同一个变量。解决这个问题的方法是return
destroy
方法中添加一行[{1}}代替return 1
finish_control = 1
return
destroy(argv.location)
中接受,即listener
注意 - 请勿使用finish_control = check_url(url)
因为它会导致安全漏洞