Python 在客户端请求后运行方法

Python 在客户端请求后运行方法,python,flask,Python,Flask,为了减少请求时间,我希望在返回200到客户机后执行该方法 @app.route('/register', methods=['POST']) def register(): #code and code return 200 send_email_with_validation_url() 我怎么做?使用线程?您可以使用线程来完成,但是如果没有一些控制,您最终可能会遇到大量线程阻塞资源。您还可能在不知不觉中导致进程崩溃 这是队列系统的作业。很合适。大致如下:

为了减少请求时间,我希望在返回200到客户机后执行该方法

@app.route('/register', methods=['POST'])
def register():
      #code and code
      return 200
      send_email_with_validation_url()

我怎么做?使用线程?

您可以使用线程来完成,但是如果没有一些控制,您最终可能会遇到大量线程阻塞资源。您还可能在不知不觉中导致进程崩溃

这是队列系统的作业。很合适。大致如下:

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_作业将被安排在不同的线程、进程甚至机器中后台运行,如果您希望使用给定的参数,您的服务器将立即返回。

您可以使用线程执行此操作,但如果没有一些控制,您可能会导致大量线程阻塞资源。您还可能在不知不觉中导致进程崩溃

这是队列系统的作业。很合适。大致如下:

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_作业将被安排在不同的线程、进程甚至机器中后台运行,如果您希望使用给定的参数,您的服务器将立即返回。

芹菜很好,但如果任务不重要,asyncio将是一个很好的探索选项,请参见

芹菜很好,但如果任务不重要,asyncio将是一个很好的探索选择,请参见

和after\u请求?无法处理?它将在请求送达后运行。请参阅我的edit@Urbester文档中指出,在所有请求上执行_请求后,该解决方案是异步的?还是会阻止我的请求?这是不对称的。它不会阻塞。看一看芹菜的文件,还有你的要求?无法处理?它将在请求送达后运行。请参阅我的edit@Urbester文档中指出,在所有请求上执行_请求后,该解决方案是异步的?还是会阻止我的请求?这是不对称的。它不会阻塞。看一看芹菜。