我需要在请求期间执行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在另一个进程上,因此预期的工作流程就像这样
但实际流程是这样的
如何在开始新流程后立即响应?
答案 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"