django中celery的定时任务

1.celery 的介绍

1.1celery 的基本介绍

1.2什么是celery beat

2.celery 定时任务的配置

3.celery 启动命令


话不多说言归正传

1.celery 的介绍

1.1celery的基本介绍

celery是基于python实现的一个异步任务的调用工具,同时还是一个任务队列,主要用于处理耗时的任务。

celery也被称为芹菜。

celery架构由三个模块组成:消息中间件,任务执行单元和任务执行结果储存 组成。

其实那在刚接触的时候小编的理解是 :老板把地皮交给包工头去干  让包工头把房子建好  然后包工头找了工人    把任务分配给工人让工人去干       最后工人盖好房子老板验收(这是小编自己的理解也就适合入门)

1.2什么是celery beat

celery支持定时任务,设定好任务的执行时间,celery就会定时自动帮你执行, 这个定时任务模块叫celery beat

2.celery定时任务的配置

__init__.py

里面主要是celery初始化配置

from datetime import timedelta

from celery import Celery
import os
import django

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "自己的项目名.settings")
django.setup()

celery_app = Celery('mycelery')
#读取celery 的配置
celery_app.config_from_object('celery_task.config')

# 定时任务
                             # 文件夹名.文件名
celery_app.autodiscover_tasks(['celery_task.times'])

celery_app.conf.update(
    CELERYBEAT_SCHEDULE={
        'sum-task': {
             # 文件夹名.文件名.方法名
            'task': 'celery_task.times.my_con',
             # 多少秒执行一次(eg:5秒一执行)
            'schedule':  timedelta(seconds=5),
             # 这是传入my_con方法中的参数
            'args': (5, 6)
        },

        'sum-task1': {
            'task': 'celery_task.times.my_print',
            'schedule':  timedelta(seconds=3),
            'args': ()
        },
    }
)

config.py

"""
    celery 配置
"""
消息中间件 broker
BROKER_URL = 'redis://xx.xx.xx.xx:6379/11'
任务结果存储 results  backend
    CELERY_RESULT_BACKEND = 'redis://xx.xx.xx.xx:6379/12'
    # 时区
    CELERY_TIMEZONE = 'Asia/Shanghai'
    # 导入指定的任务模块
    CELERY_IMPORTS = (
        'celery_task.tasks'
    )

task.py 里面写的是异步任务就不展示了


times.py

里面写的是定时任务

# 定时任务
import time

from celery_task import celery_app

@celery_app.task()
def my_con(x,y):
    print(x,y)
    print('x和y相加')
    return x+y

@celery_app.task()
def my_print():
    print('22222222')

3.celery 启动命令

异步任务的启动命令:celery -A 任务名 worker -l info -P eventlet

定时任务的启动命令:celery -A 任务名 beat -l info

注意:要先启动异步任务,在启动定时任务

4.文章到这就结束了,快去写写吧

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Django使用Celerydjango-celery-beat可以实现定时任务或周期性任务。下面是两种添加定时任务的方式: 1. 在celery.py添加任务: 在你的项目celery.py文件,你可以定义定时任务。首先,确保你已经安装了django-celery-beat,并将其添加到INSTALLED_APPS。然后,在celery.py文件添加以下代码: ```python from celery import Celery from django.conf import settings app = Celery('your_project_name') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) @app.on_after_configure.connect def setup_periodic_tasks(sender, **kwargs): # 添加定时任务 sender.add_periodic_task(10.0, your_task.s(), name='your_task_name') @app.task def your_task(): # 定时任务的具体逻辑 pass ``` 在上面的代码,`your_project_name`是你的项目名称,`your_task_name`是你给定时任务起的名字,`your_task`是你要执行的具体任务。 2. 通过Django admin后台添加任务: django-celery-beat还提供了通过Django admin后台添加定时任务的方式。首先,在settings.py文件添加`'django_celery_beat'`到INSTALLED_APPS。然后,在终端运行以下命令创建数据库迁移: ```shell python manage.py makemigrations python manage.py migrate ``` 接下来,你可以通过访问Django admin后台来添加定时任务。在后台,你可以设置任务的名称、任务的类型(定时任务或周期性任务)、任务的执行时间等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值