运行 来自 HTTP 请求的后台任务

Run a background task from a HTTP request

我有一些服务器代码,我尝试从 GET 请求 运行 失败,但我不断收到超时错误。是否可以在 GET 请求期间启动并行线程,然后 return 向用户发送一条消息,说明他们的请求正在后台处理?如果不是,我的代码有哪些替代方法可以在不给予客户端控制权的情况下完成?

我是新手 运行在 gunicorn 服务器上安装最新的 Flask。

您可以启动一个线程或一个单独的进程来 运行 您的后台任务,然后 return 将响应返回给客户端。响应可以包括对客户端可以用来轮询状态或进度的后台任务的引用。

你听说过Celery吗?这是一个任务队列框架,它允许您 运行 一个或多个工作进程执行应用程序请求的异步任务,在本例中为 Flask 服务器。

我写了一个小例子来演示如何将 Celery 与 Flask 结合起来。此示例的 github 存储库是:https://github.com/miguelgrinberg/flask-celery-example。在自述文件中,您可以找到我写的博客 post 的 link,它详细解释了该项目。

Celery 绝对是一个不错的选择,但是,如果您的操作简单且不重要,您可以考虑使用 asyncio。检查这个