Python 从Flask Restful中的一个api调用返回多次

Python 从Flask Restful中的一个api调用返回多次,python,flask,Python,Flask,我想调用一个generate()函数并向用户发送一条消息,然后继续执行一个函数 @application.route("/api/v1.0/gen", methods=['POST']) def generate(): return "Your id for getting the generated data is 'hgF8_dh4kdsRjdr'" main() #generate a data return "Successfully generated some

我想调用一个generate()函数并向用户发送一条消息,然后继续执行一个函数

@application.route("/api/v1.0/gen", methods=['POST'])
def generate():
    return "Your id for getting the generated data is 'hgF8_dh4kdsRjdr'"
    main() #generate a data
    return "Successfully generated something. Use your id to get the data"

我知道这不是一种正确的返回方式,但我希望你了解我正在努力实现的目标。也许Flask有一些内置方法可以从一个api调用中多次返回?

基本上,您描述的是所谓的服务器发送事件(又称SSE)

这种格式的不同之处在于,它们返回的是“eventstream”响应类型,而不是通常的JSON/明文
如果要将其与python/flask结合使用,则需要生成器

小代码示例(带有GET请求):

Message
class您可以在这里找到:

当然,您需要能够正确阅读此类回复的特定客户。

支持无效python的实时SSE选项卡

,更不用说烧瓶了。您应该做的是启动一个与id关联的异步任务,然后添加另一个API来获取给定id的数据,并查看websockets。一种方法是,您可以使用套接字在一个端点启动请求,并使用套接字通过建立状态完全连接来保持应用程序更新。查看此问题:
@application.route("/api/v1.0/gen", methods=['GET'])
def stream():
    def eventStream():
        text = "Your id for getting the generated data is 'hgF8_dh4kdsRjdr'"
        yield str(Message(data = text, type="message"))
        main()
        text = "Successfully generated something. Use your id to get the data"
        yield str(Message(data = text, type="message"))
    resp.headers['Content-Type'] = 'text/event-stream'
    resp.headers['Cache-Control'] = 'no-cache'
    resp.headers['Connection'] = 'keep-alive'
    return resp