在flask应用程序中,我需要在执行checkJob之后执行其他任务的return render_template(page)功能(检查作业状态并发送电子邮件给用户)。用户将看到确认页面,但仍在运行后台作业以检查作业状态。

我尝试将芹菜https://blog.miguelgrinberg.com/post/using-celery-with-flask用于后台作业,但它不起作用。 return render_template(page)之后的所有内容均未执行。

这是代码片段:

@app.route("/myprocess", methods=['POST'])
def myprocess():
    //.... do work
    #r = checkJob()
    return render_template('confirm.html')
    r = checkJob()

@celery.task()
def checkJob():
    bb=1
    while bb == 1:
       print "checkJob"
       time.sleep(10)

最佳答案

如注释中所建议,您应该使用apply_async()

@app.route("/myprocess", methods=['POST'])
def myprocess():
    #.... do work
    r = checkJob.apply_async()
    return render_template('confirm.html')


请注意,与example一样,您不想调用checkJob(),而是将其保留为checkJob

关于python - 返回render_template后执行其他任务的 flask ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40622366/

10-14 17:37