Я пытаюсь написать простое приложение командной строки с prompt-toolkit
. Это работает довольно хорошо, однако я хочу выйти из программы, если не было ввода в течение длительного времени. Это оказалось очень сложным для меня.
Вот некоторый псевдокод для того, как должно работать приложение cli:
from prompt_toolkit import PromptSession
import time
def execute(cmd):
# do long task
time.sleep(120)
if __name__ == '__main__':
s = PromptSession()
while True:
start_time = time.time()
cmd = s.prompt('>')
execute(cmd)
if time.time() - start_time > 60:
break
Так что программа должна завершиться, если пользователь не сделал этого. не выдает команду за последние 60 секунд. Но если команда выполняется дольше 60 секунд, она должна быть прервана только через 60 секунд после ее завершения (и новая команда не была выполнена).
Я уже спотыкаюсь о первом бите. Нужна ли параллельная обработка для проверки времени при работе s.prompt
? Существует также prompt_async
версия команды. Я играл с этим, но безуспешно ...