celery使用+定义时间任务

本文介绍了如何在Django项目中集成Celery进行异步任务处理,详细阐述了Celery的配置步骤,包括在settings、celery.py、__init__和views中的设置,以及如何定义和启动Celery定时任务。文章还提供了一种简化配置的方法,以实现更便捷的任务管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先说明我用的django框架,那么为什么要使用celery框架,django3.0以下版本都是同步处理请求,假设我现在有一万个任务,我的django框架是承受不了的,所以就用到了clery异步.
在这里插入图片描述
在这里插入图片描述

首先在settings配置

# 异步任务代理
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/'

# 任务结果
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/'

# 保存格式
CELERY_RESULT_SERIALIZER = 'json'

在项目下创建一个celery.py 在里面写

在这里插入图片描述

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

# 设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'liuyue_good.settings')

# 注册Celery的app
app = Celery('liuyue_good')

# 绑定配置文件
app.config_from_object('django.conf:settings', namespace='CELERY')

# 自动发现各个app下的tasks.py文件
app.autodiscover_tasks()

在__init中写

在这里插入图片描述

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

# 导包
import pymysql

# 初始化
pymysql.install_as_MySQLdb()

__all__ = ['celery_app']

在views中定义函数调用celery任务

from factory_test import SimpleFactory
from myapp import tasks
from django.http import JsonResponse

# 调用celery任务
def celery_test(request):
    tasks.aync_test.delay()
    SimpleFactory.ThirdLogin("gitee")
    return JsonResponse({'task_id': 'Hello python'})

最后启动celery

# celery协程启动命令
celery worker -A liuyue_good -l info -P eventlet

问题来了 怎么用celery设置一个定时任务呢???

别急这就来了

在settings里配置

CELERY_BEAT_SCHEDULE = {
    # 定义定时任务
    'celery_work': {
        'task': 'myapp.tasks.aync_test',
        'schedule': timedelta(seconds=30)
    }
}

启动定时任务也要有的

# 还要启动一个定时任务的服务
celery -A liuyue_good beat -l info

这样一个完整的celery就完成了 是不是感觉有点麻烦 别急嘛 还有简单一点的

在根目录下创建一个文件夹

在这里插入图片描述

里面配置celery
from celery import Celery

app = Celery('tasks', broker='redis://localhost', backend='redis://localhost')

@app.task(name='myapp.tasks.mail')
def mail(mailaddr):
    print(mailaddr)

怎么样是不是超简单

别急还没完 需要启动celery

celery -A tasks worker --pool=solo -l info

到这里就结束了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值