为了尽量减少请求时间,我想在向客户端返回 200 之后执行该方法。
@app.route('/register', methods=['POST'])
def register():
#code and code
return 200
send_email_with_validation_url()
我该怎么做?用线程?
请您参考如下方法:
您可以使用线程来做到这一点,但如果没有一些控制,您最终可能会遇到大量线程阻塞资源的情况。您还可能在不知不觉中导致进程崩溃。
这是队列系统的工作。 Celery会很合适。类似的东西:
from celery import Celery
app = Celery('tasks', broker='amqp://guest@localhost//')
@app.task
send_email_job(address):
send_email_with_validation_url()
@app.route('/register', methods=['POST'])
def register():
#code and code
send_email_job.delay(address)
return 200
在此示例中,send_email_job 将使用给定的参数安排在后台运行(在不同的线程或进程中,甚至是机器中),您的服务器将立即返回。
