python celery beat实现定时任务的示例代码

 更新时间:2024年03月04日 14:44:08   作者:埃菲尔没有塔尖  
在日常工作中,我们常常会用到需要周期性执行的任务,本文主要介绍了python celery beat实现定时任务的示例代码,具有一定的参考价值,感兴趣的可以了解一下

在Celery在python中的应用除了实现异步任务(async task)外也可以执行定时任务(beat)

1.Celery定时任务是什么?

Celery默认任务单元由任务生产者触发,但有时可能需要其自动触发, 而beat进程正是负责此类任务,能够自动触发定时/周期性任务.

在这里插入图片描述

只需要在配置中配置好周期任务,然后在运行一个周期任务触发器(beat)即可

2.直接上代码

目录结构如下:

在这里插入图片描述

celery_app.py 文件代码如下:

import os
import sys
import time
import celery
from pathlib import Path
from datetime import timedelta

# 实例化celery对象
app = celery.Celery(
    "celery_worker",
    backend="redis://:@127.0.0.1:6379/4",
    broker="redis://:@127.0.0.1:6379/5",
    include=[
        "celery_worker.email.tasks"
    ],
)

# celery beat 定时任务
beat_schedule = {
    'periodic_task-every-minute': {
        # 'task': 'celery_worker.email.tasks.add',
        'task': 'chain.send_chains',
        'schedule': timedelta(seconds=10),
        'args': (11, 22)
    },
}

# 配置文件
app.conf.update(
    task_serializer="json",
    result_serializer="json",
    accept_content=["json"],
    task_default_queue="normal",
    timezone="Asia/Shanghai",
    enable_utc=False,
    task_ignore_result=True,
    redis_max_connections=100,
    result_expires=3600,
    beat_schedule=beat_schedule
)

"""
celery -A celery_worker.celery_app worker -l info
celery -A celery_worker.celery_app beat
"""

email.tasks.py 代码如下:

from loguru import logger
# 模块化之后
from celery_worker.celery_app import app

@app.task(name='chain.send_chains')
def add(x, y):
    logger.info(f'number_add 进来了...x:{x}, y:{y}')
    return x + y

然后顺序启动 worker 和 beat 定时任务(记得两个都必须启动)

执行如下命令:

celery -A celery_worker.celery_app worker -l info   (启动干活的人)
celery -A celery_worker.celery_app beat  (启动定时任务 类似crontab)

效果如下:

在这里插入图片描述

在这里插入图片描述

其实简单的来说就是这点代码:

beat_schedule = {
    'periodic_task-every-minute': {
        # 'task': 'celery_worker.email.tasks.add',
        'task': 'chain.send_chains',
        'schedule': timedelta(seconds=10),
        'args': (11, 22)
    },
}

periodic_task-every-minute 这个就是定时任务的名字 ,随便起无所谓。

重点是这个 "task",经过实际测试,如果这个工作函数没有指定name 名字的话,默认就是 函数路径+函数名称 也就是 'celery_worker.email.tasks.add'

但是如果这函数添加name属性值的话 直接用名字也是可以的,也就是'chain.send_chains'

到此这篇关于python celery beat实现定时任务的示例代码的文章就介绍到这了,更多相关python celery beat定时任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Flask使用应用上下文出现错误的问题解析与解决详解

    Flask使用应用上下文出现错误的问题解析与解决详解

    在使用 Flask 开发 Web 应用时,尤其是涉及数据库操作时,会遇到报错:Working outside of application context,下面我们就来看看对应的问题分析与解决吧
    2025-05-05
  • python中循环语句while用法实例

    python中循环语句while用法实例

    这篇文章主要介绍了python中循环语句while用法,实例分析了while语句的使用方法,需要的朋友可以参考下
    2015-05-05
  • python如何统计字符串中字符的个数

    python如何统计字符串中字符的个数

    这篇文章主要给大家介绍了关于python如何统计字符串中字符的个数的相关资料,如果在一个字符串中,需要统计某个字符或字符串出现的次数,可以使用count方法,需要的朋友可以参考下
    2023-10-10
  • 使用Python在PDF中绘制多种图形的操作示例

    使用Python在PDF中绘制多种图形的操作示例

    在进行PDF自动化处理时,人们往往首先想到的是文本生成、图片嵌入或表格绘制等常规需求,然而在许多实际业务场景中,能够在PDF中灵活绘制图形同样至关重要,本文将基于免费的Free Spire.PDF for Python,一步步示范如何在同一页PDF中绘制多种常见图形,需要的朋友可以参考下
    2025-11-11
  • Python为Excel单元格设置填充\背景色的操作方法(纯色、渐变、图案)

    Python为Excel单元格设置填充\背景色的操作方法(纯色、渐变、图案)

    在使用Excel进行数据处理和分析时,对特定单元格进行背景颜色填充不仅能够提升工作表的视觉吸引力,还能帮助用户快速识别和区分不同类别的数据,本文将通过三个示例详细介绍如何使用Python在Excel中设置不同的单元格背景,需要的朋友可以参考下
    2024-08-08
  • 浅谈Python列表嵌套字典转化的问题

    浅谈Python列表嵌套字典转化的问题

    这篇文章主要介绍了浅谈Python列表嵌套字典转化的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • numpy ndarray 按条件筛选数组,关联筛选的例子

    numpy ndarray 按条件筛选数组,关联筛选的例子

    今天小编就为大家分享一篇numpy ndarray 按条件筛选数组,关联筛选的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python中安装库的常用方法介绍

    Python中安装库的常用方法介绍

    大家好,本篇文章主要讲的是Python中安装库的常用方法介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • python实现计算资源图标crc值的方法

    python实现计算资源图标crc值的方法

    这篇文章主要介绍了python实现计算资源图标crc值的方法,通过解析资源文件找到icon的数据,从而实现该功能,需要的朋友可以参考下
    2014-10-10
  • Python调用百度AI实现身份证识别

    Python调用百度AI实现身份证识别

    这篇文章主要介绍了Python通过调用百度AI的文字识别功能实现对身份证进行识别,代码具有一定的学习价值,感兴趣的朋友一起来看看效果吧
    2021-12-12

最新评论