Python Flask立即发送响应

时间:2015-06-26 02:29:07

标签: python flask

我需要在请求期间执行Process,如下所示

@app.route('/test')
def test_process():
    print "starting new process"
    p = Process(target=do_long_extra_job)
    p.start()

    return "this is response"

do_long_extra_job在另一个进程上,因此预期的工作流程就像这样

  1. 启动流程
  2. 响应
  3. 长时间的额外工作已经完成
  4. 但实际流程是这样的

    1. 统计流程
    2. 长时间的额外工作已经完成
    3. 响应
    4. 如何在开始新流程后立即响应?

1 个答案:

答案 0 :(得分:-1)

apply_async课程中的multiprocessing.Pool方法可能适合您。 '流程'在这种情况下,它不会为你工作,因为它是一个阻塞方法,这意味着你的return语句在p.start()完成执行之前不会执行。

apply_async和multiprocessing.Pool:

的示例
def do_long_extra_job():
    #some extra long process
    return

@app.route('/test')
def test_process():
    print "starting new process"
    pool = multiprocessing.Pool(processes=1)
    pool.apply_async(do_long_extra_job)
    return "this is response"