我正在使用多提示提示工具包(2.0.7)脚本,如果用户花费5分钟以上的时间来完成提示,则希望整个脚本引发错误。
我最初尝试使用inputhooks,但实际上似乎并未为回调函数生成单独的线程。相反,从the app engine docs开始,我使用线程模块创建了以下代码:
import threading
from prompt_toolkit import prompt
from prompt_toolkit.application.current import get_app
def timeout():
get_app().exit(exception=TimeoutError("Took too long to input something."))
# Loops if answers don't meet some conditions.
# These are in addition to validations for each prompt (not shown below)
while True:
running = True
t = threading.Timer(300, timeout)
t.start()
p1 = prompt("Example prompt 1 input: ")
p2 = prompt("Example prompt 2 input: ")
p3 = prompt("Example prompt 3 input: ")
if <some_logic about p1/p2/p3>:
t.cancel()
break
这些是更简单的方法吗?上面的代码几乎可以用,但是很奇怪/引入了一个小的竞态条件。