@IT·互联网技术研发汇集

python celery beat 实现定时任务

2024-03-05  本文已影响0人  知信学源

Celery 的 `beat` 是一个用于调度和执行周期性任务组件。要使用 `beat` 实现定时任务,你需要按照以下步骤操作:

1.安装 Celery: 如果你还没有安装 Celery,首先需要安装它。

    ```bash

    pip install celery

    ```

2.创建 Celery 应用: 你需要创建一个 Celery 应用。

    ```python

    from celery import Celery

    app = Celery('my_tasks', broker='pyamqp://guest@localhost//')

    ```

    在这个例子中,`broker` 配置为使用 RabbitMQ,你需要根据你的消息中间件进行相应的配置。

3.定义周期性任务: 在 Celery 应用中定义周期性任务。

    ```python

    @app.task

    def my_task():

        print("My task is running...")

    ```

4.配置 `beat`: 在 Celery 应用中配置 `beat`。

    ```python

    from celery.schedules import crontab

    app.conf.beat_schedule = {

        'add-every-minute': {

            'task': 'my_tasks.my_task',

            'schedule': crontab(),  # 每分钟执行

        },

    }

    ```

    在这个例子中,`crontab` 用于定义基于 cron 表达式的调度。你可以使用如 `crontab(minute=0, hour=0)` 来表示每天午夜执行任务。

5.启动 `beat`: 启动 `beat` 服务来运行周期性任务。

    ```bash

    celery -A my_tasks beat -l info

    ```

    这里,`-A` 参数指定了 Celery 应用的名称(即 `my_tasks`),`-l` 参数设置了日志级别。

6.保持 `beat` 运行: `beat` 作为一个独立的服务会继续运行,你可以使用 `Ctrl+C` 来停止它。

    为了保持 `beat` 服务运行,你可以将其作为系统服务启动,或者使用一个守护进程管理器如 `systemd`、`supervisord` 等。

请记住,这只是一个简单的例子。在生产环境中,你可能需要考虑更多的因素,比如结果的持久化、任务的重新执行、中间件的安全性等。

另外,Celery 的 `beat` 提供了多种调度器,比如 `crontab`、`interval` 和 `path` 等,你可以根据需求选择合适的调度器。更多详细信息和高级用法,

请参考 [Celery 文档](http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html)。

上一篇 下一篇

猜你喜欢

热点阅读