我正在使用flask框架将文本到语音系统连接到web。基本上,网站通过文本框接受输入并返回一个音频文件。 一旦文本输入文本框并按下下面的按钮,将调用回调。在
def task_text2speech():
# call to my text to speech system
# respond to client
在上面的功能步骤中,“调用我的文本语音转换系统”大约需要30-100秒。在此期间,客户端浏览器将没有任何响应。我想通过启动一个线程来克服这个问题,而不是在task_text2speech中阻塞task_text2speech,一旦线程完成语音合成,就向客户机响应。在
对我来说,实现线程化不是问题,但我不知道在上述场景中响应客户机所需的烧瓶处理程序。感谢任何文档或示例实现。在
一种简单、低技术含量的实现方法是向客户机返回一个响应,指示服务器正在处理请求,同时启动线程来执行该工作。您将为每个工作线程分配一个唯一的ID。在
显示“正在处理”消息的响应页面将有一个自动重定向,在5秒后启动。重定向将指向一个新的Flask路由,该路由使用worker线程ID。与该路由相关联的view函数检查工作线程的状态,如果该线程仍在工作,它将用相同的“processing”页响应,这样客户端将在5秒后再次重定向。在
当处理页面中的重定向处理程序发现工作线程已完成时,它可以重定向到一个新页面,该页面提供生成的音频文件供下载。在
我希望这有帮助。在
相关问题 更多 >
编程相关推荐