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

时间:2020-10-14 08:07:30

标签: flask gevent

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

我正在使用Flask作为Web服务。收到请求后,服务应启动后台任务并立即返回响应(不阻止客户端)。

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

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

我想念什么?

0 个答案:

没有答案