基于 Celery 的后台任务

    Celery 是强大的任务队列库,它可以用于简单的后台任务,也可用于复杂的多阶段应用的计划。本文主要说明如何在 Flask 中配置使用 Celery 。本文假设你已经阅读过了其官方文档中的 Celery 入门

    Celery 是一个独立的 Python 包。使用 pip 从 PyPI 安装:

    你首先需要有一个 Celery 实例,这个实例称为 celery 应用。其地位就相当于Flask 中 一样。这个实例被用作所有 Celery 相关事务的入口,如创建任务和管理工人,因此它必须可以被其他模块导入。

    只要如下这样就可以在 Falsk 中使用 Celery 了:

    这个函数创建了一个新的 Celery 对象,使用了应用配置中的 broker ,并从 Flask配置中更新了 Celery 的其余配置。然后创建了一个任务子类,在一个应用情境中包装了任务执行。

    让我们来写一个任务,该任务把两个数字相加并返回结果。我们配置 Celery 的broker ,后端使用 Redis 。使用上文的工厂创建一个 应用,并用它定义任务。:

    至此,如果你已经按上文一步一步执行,你会失望地发现你的 .wait() 不会真正返回。这是因为还需要运行一个 Celery 工人来接收和执行任务。:

    字符串替换为你创建 _celery 对像的应用包或模块。

    现在工人已经在运行中,一旦任务结束, wait 就会返回结果。