を使用して簡単なコマンド ライン アプリケーションを作成しようとしています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
コマンドのバージョンもあります。私はそれで遊んだが、成功しなかった...