【发布时间】:2021-12-31 10:39:53
【问题描述】:
我想提供一个可以同时处理多个用户请求的 falcon API。
每个请求都会触发一个长处理任务,因此我使用了来自concurrent.futures 的ThreadPoolExecutor,如下所示:
import falcon
from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(max_workers=10)
class Resource:
def on_post(self, req, resp):
def some_long_task():
# here is the code for the long task
executor.submit(some_long_task)
resp.body = 'OK'
resp.status = falcon.HTTP_201
app = falcon.App()
resource = Resource()
app.add_route('/', resource)
# Serve...
我正在使用gunicorn 提供API,并带有以下参数:gunicorn main:app --timeout 10000。
当我连续对 API 执行 2 个请求时,两个长任务都在后台连续触发。 但是,一旦启动的第一个长任务完成,它就会停止执行第二个任务。我怎样才能避免这种情况?
【问题讨论】:
标签: python-3.x gunicorn concurrent.futures falconframework