瓶子:异步执行长时间运行的函数并向客户端发送早期响应?

2024-04-19 21:18:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理的瓶子应用程序(CherryPy后面的)从HTTP客户端接收对资源的请求,这导致任务的执行可能需要几个小时才能完成。我想发送一个早期的HTTP响应(例如,202 Accepted)并继续处理该任务。有没有一种方法可以在不使用MQ库和单独使用Python/Bottle的情况下实现这一点?在

例如:

from bottle import HTTPResponse

@route('/task')
def f():
    longRunningTask() # <-- Anyway to make this asynchronous? 
    return bottle.HTTPResponse(status=202)

Tags: 方法from应用程序http客户端瓶子bottle情况
1条回答
网友
1楼 · 发布于 2024-04-19 21:18:03

我知道这个问题已经有好几年了,但我发现@ahmed的回答毫无帮助,我想我至少应该在我的申请中分享我是如何解决这个问题的。在

我所做的就是利用Python现有的线程库,如下所示:

^{1}$

使用线程可以使您保持一致的响应时间,同时仍然具有相对复杂或耗时的函数。在

我使用的是uWSGI,所以如果你这样做的话,一定要在uWSGI应用程序配置中启用线程。在

相关问题 更多 >