3

我正在使用烧瓶框架将文本到语音系统连接到网络。基本上网站通过文本框接受输入并返回一个音频文件。一旦在文本框中输入文本并按下下方的按钮,就会调用回调。

def task_text2speech():

    # call to my text to speech system 
    # respond to client

在上述功能步骤“# call to my text to speech system”中,大约需要 30-100 秒。在此期间客户端浏览器不会有任何响应。我想通过启动一个线程而不是在 task_text2speech 中阻塞 task_text2speech 来克服这个问题,并且一旦线程完成语音合成响应客户端。

对我来说,实现线程不是问题,但我不知道在上述场景中响应客户端所需的烧瓶处理程序。感谢任何文档或示例实现。

4

1 回答 1

2

一种简单的、低技术含量的实现方法是向客户端返回一个响应,表明服务器正在处理请求,同时启动线程来完成工作。您将为每个工作线程分配一个唯一 ID。

显示“处理”消息的响应页面将在 5 秒后启动自动重定向。重定向将指向采用工作线程 ID 的新 Flask 路由。与此路由关联的视图函数检查工作线程的状态,如果该线程仍在工作,它会以相同的“处理”页面响应,以便客户端将在另外 5 秒内再次重定向。

当来自处理页面的重定向处理程序发现工作线程完成时,它可以重定向到提供生成的音频文件以供下载的新页面。

我希望这有帮助。

于 2013-06-30T00:54:25.783 回答