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定时任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用Python实现面部识别的方法详解

    利用Python实现面部识别的方法详解

    人脸识别正在成为软件开发中的一种趋势。它有助于识别人脸并使应用程序更加健壮。本文将使用python和face_recognition库创建一个简单的人脸识别,需要的可以参考一下
    2022-05-05
  • 基于Python 优化 MUI标题栏

    基于Python 优化 MUI标题栏

    这篇文章主要介绍的是基于Python 优化 MUI标题栏,一个特色鲜明MUI界面无疑是能够吸引用户的关键之一,这利用css和JavaScript可以很快进行实现,但是同时对于初学者来说也是困难的,下面文章就来学习几个简单的小技巧实现页面美化吧,需要的朋友可以参考一下
    2021-11-11
  • Python中Django的ORM高级用法

    Python中Django的ORM高级用法

    这篇文章主要介绍了Python中Django的ORM高级用法,ORM是一种思想,ORM对象-关系映射,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统,需要的朋友可以参考下
    2023-07-07
  • 用Python做一个简单的图书管理系统

    用Python做一个简单的图书管理系统

    这篇文章主要介绍了用Python做一个简单的图书管理系统,有“还书““借阅”“添加书籍”等功能,文中提供了部分实现代码和解决思路,有一定的参考价值,需要的朋友快来一起看看吧
    2023-04-04
  • pycharm执行python时,填写参数的方法

    pycharm执行python时,填写参数的方法

    今天小编就为大家分享一篇pycharm执行python时,填写参数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python设计模式之外观模式实例详解

    Python设计模式之外观模式实例详解

    这篇文章主要介绍了Python设计模式之外观模式,结合实例形式详细分析了外观模式的概念、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2019-01-01
  • numpy.ndarray 实现对特定行或列取值

    numpy.ndarray 实现对特定行或列取值

    今天小编就为大家分享一篇numpy.ndarray 实现对特定行或列取值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 快速解决pyqt5窗体关闭后子线程不同时退出的问题

    快速解决pyqt5窗体关闭后子线程不同时退出的问题

    今天小编就为大家分享一篇快速解决pyqt5窗体关闭后子线程不同时退出的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python中xml和dict格式转换的示例代码

    Python中xml和dict格式转换的示例代码

    最近在做APP的接口,遇到XML格式的请求数据,费了很大劲来解决,下面小编给大家分享下Python中xml和dict格式转换问题,感兴趣的朋友跟随小编一起看看吧
    2019-11-11
  • python3基础之集合set详解

    python3基础之集合set详解

    大家好,本篇文章主要讲的是python3基础之集合set详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论