【问题标题】:Python FLASK Return KeyboardIntruptPython FLASK 返回键盘中断
【发布时间】:2021-09-27 04:39:25
【问题描述】:

我为执行 python 脚本“Voice_Recorder.py”的 Flask 创建了一个路由。此脚本开始录制 wav 文件。要停止录制和保存文件,我需要传递一个键盘中断。是否可以将键盘中断从前端传递到我的烧瓶后端?

**PY FILE**
  **@app.route('/record/',methods=['POST'])
  def record():
    import Voice_Recorder.py  
    return'done'** 

****HTML FILE**
  **center><button> <a href="/record/">Start recoring!</a></button></center>****    

【问题讨论】:

    标签: python flask web-development-server


    【解决方案1】:

    简短的回答:你不能。 Flask 在后端,前端在浏览器中运行,可能在任何其他 PC/移动设备等上。

    此外,导入脚本 **Voice_Recorder.py ** 似乎是一个阻塞操作——它完全阻塞了开发服务器,并会阻止你向它发送任何命令。在现实世界的生产服务器(gunicorn 等)中不会发生这种情况,但随后会运行多个进程,因此一个进程卡在运行您的脚本,而其他进程无法阻止它这样做。

    建议:

    你的 Flask 服务器应该有两个路由记录和 stop_record,你的网站需要两个按钮来公开它。 Record 可能应该使用子进程 (How to execute a program or call a system command?) 启动 voice_recorder,而 stop_record 需要向该脚本发送键盘命令或在 Voice Commands.py 侦听并自行关闭的某处写入文本文件。

    还有其他解决方案,但考虑到您的问题程度,我相当肯定它们现在太复杂了。

    【讨论】:

    • 谢谢,如果我在单独的 python 脚本中记录和停止记录作为函数,当我导入函数时,我是否也需要导入它们的所有库。
    • 正在导入,否 - 但您需要安装它们
    【解决方案2】:

    你可以使用一个叫做pynput的东西:

      pip install pynput
    

    这将有助于检测任何按键。 “pynput.keyboard”包含用于控制和监视键盘的类。

    例如按“空格键”

    from pynput.keyboard import Key, Controller
    
    keyboard = Controller()
    
    # Press and release space
    keyboard.press(Key.space)
    keyboard.release(Key.space)
    

    完整文档here

    【讨论】:

      猜你喜欢
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 2014-05-08
      • 2011-07-07
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多