最佳答案
我正在用 Flask 编写一个应用程序,除了 WSGI
是同步和阻塞的以外,这个应用程序运行得非常好。我特别有一个调用第三方 API 的任务,这个任务可能需要几分钟才能完成。我希望进行这个调用(实际上是一系列调用) ,然后让它运行。同时把控制权还给 Flask。
我的观点是:
@app.route('/render/<id>', methods=['POST'])
def render_script(id=None):
...
data = json.loads(request.data)
text_list = data.get('text_list')
final_file = audio_class.render_audio(data=text_list)
# do stuff
return Response(
mimetype='application/json',
status=200
)
现在,我想要的是一条线
final_file = audio_class.render_audio()
运行并提供方法返回时执行的回调,而 Flask 可以继续处理请求。这是唯一的任务,我需要 Flask 异步运行,我想一些建议,如何最好地实现这一点。
我已经看过 Twsted 和 Klein 了,但我不确定它们是否过度,因为也许线程就足够了。或许芹菜是个不错的选择?