Flask 如何使Greenlet线程在后台运行(即:不阻塞主线程)?

Flask 如何使Greenlet线程在后台运行(即:不阻塞主线程)?,flask,gevent,Flask,Gevent,这是一个非常新手的问题,因为我找不到示例代码 我使用Flask作为web服务。当收到请求时,服务应该立即启动后台任务并返回响应(以不阻塞客户端) 但是,当我调用.run()时,主线程似乎是block(即:在线程完成之前,服务不会返回结果) 我错过了什么?使用gevent.spawn(做耗时的任务)并删除绿色线程。run()应该在后台运行做耗时的任务。 from gevent import Greenlet @app.route('/credit-scoring/get-score', metho

这是一个非常新手的问题,因为我找不到示例代码

我使用Flask作为web服务。当收到请求时,服务应该立即启动后台任务并返回响应(以不阻塞客户端)

但是,当我调用.run()时,主线程似乎是block(即:在线程完成之前,服务不会返回结果)

我错过了什么?

使用
gevent.spawn(做耗时的任务)
并删除
绿色线程。run()
应该在后台运行
做耗时的任务。
from gevent import Greenlet
@app.route('/credit-scoring/get-score', methods=['POST'])
def handler_generate():
    """
    :return:
    """
    id = request.form["id"]
    file = request.files['file']
    name = request.form['name'].replace(" ", "_") # replace space with underscroll


    green_thread = Greenlet.spawn(do_task_that_take_long_time,
                                              name,
                                              file,
                                              id)

    green_thread.run()  # this is being block 
    
    print("meowwww")
    # todo: create a task to submit data when done
    result = {"errorCode": 0}
    return result