我正在使用Python并尝试执行一行代码并在执行后我调用sys.exit()
让脚本本身“退出”。但是,似乎sys.exit()
正在执行上面的代码行之前执行。以下是我试图实现的代码:
if something == True:
self.redirect('http://www.google.com/')
sys.exit()
脚本在重定向之前退出。我需要重定向完成,然后执行sys.exit()。由于正在实现其他代码的性质,我无法使用sleep命令。任何人都可以帮我解决这个问题的解决方法吗?
答案 0 :(得分:7)
self.redirect()
中可能存在一些缓冲或异步。人们在执行print
时经常遇到类似的问题,然后是sys.exit()
:print
输出被缓冲,然后在刷新进程内输出缓冲区之前进程退出)
您可以通过刷新缓冲区和/或等待异步任务完成来解决此问题。
但是,从redirect
正在做什么的问题不清楚。
答案 1 :(得分:1)
尝试使用atexit模块注册一个在调用sys.exit()之前运行的清理函数。
将重定向功能注册为清理功能:
import atexit
atexit.register(redirect, 'http://www.google.com')
注意:传递给重定向函数的参数包含在函数对象之后。我们这里不需要括号,因为我们将它传递给函数对象,而不是实际调用函数。
此外,如果您的重定向方法无法正常工作,这也无济于事。我将通过从Python解释器显式调用它来确保您的重定向方法正常工作。