提示工具箱中提示超时

时间:2019-04-15 18:02:15

标签: python multithreading prompt-toolkit

我正在使用多提示提示工具包(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

这些是更简单的方法吗?上面的代码几乎可以用,但是很奇怪/引入了一个小的竞态条件。

0 个答案:

没有答案