Django中celery的简单使用

Django中celery的简单使用

安装

# pip安装
pip install -U celery  # -U表示有celery则更新,没有就安装

# 安装包安装
# 官网下载安装包  https://pypi.org/project/celery/
tar xvfz celery-xx.tar.gz  # 解压
cd celery-xx
python setup.py
python setup.py install

使用

目录结构介绍

api/
├── mycelery/
    ├── config.py     # 配置文件
    ├── __init__.py   
    ├── main.py       # 主程序
    └── app01task/      # 一个目录可以放置多个任务,该目录下存放当前任务执行时需要的模块或依赖,也可以每个任务单独一个目录
        └── tasks.py  # 任务的文件,名称必须是这个!!!
    └── app02task/
        └── tasks.py  # 任务的文件,名称必须是这个!!!

内部文件介绍

main.py主程序文件
# 主程序
import os

from celery import Celery
# 创建celery实例对象
app = Celery("api")

# 把celery和django进行组合,识别和加载django的配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'api.settings.dev')

# 在当前clery中启动django框架,对django框架进行进行初始化
import django
django.setup()

# 通过app对象加载配置,文件路径
app.config_from_object("mycelery.config")

# 自动搜索并加载任务
# 参数必须必须是一个列表,里面的每一个任务都是任务的路径名称
# app.autodiscover_tasks(["任务1","任务2"])
app.autodiscover_tasks(["mycelery.app01task","mycelery.app02task"]) #会自动识别app01task目录下面的tasks.py文件中的任务,所以不需写成mycelery.app01task.tasks
config.py配置文件
# 任务队列的链接地址(变量名必须叫这个)
broker_url = 'redis://127.0.0.1:6379/14'  
# 结果队列的链接地址(变量名必须叫这个)
result_backend = 'redis://127.0.0.1:6379/15'

from celery.schedules import crontab
from .main import app
# 定时任务的调度列表,用于注册定时任务
app.conf.beat_schedule = {
    'app01_task': {
        # 本次调度的任务
        'task': 'app01task', # 这里的任务名称必须先到main.py中注册,如果写了别名,直接写别名就可以了
        # 定时任务的调度周期
        # 'schedule': crontab(minute=0, hour=0),   # 每周凌晨00:00
        'schedule': crontab(),   # 每分钟,没写秒数,那么就是每分钟的0秒开始
      	# 'args': (16, 16),  # 注意:任务就是一个函数,所以如果有参数则需要传递
    },
}
tasks.py任务文件
# 任务必须写在tasks.py文件中,其他文件名无法识别
from mycelery.main import app

@app.task(name="app01task")  # 这里写什么,main.py任务列表就写什么,不填写默认函数名
def apptask():
    print("执行任务")

启动命令

# 先切换到项目的根目录下,也就是api下
# 执行celery的定时任务程序
celery -A mycelery.main beat

# 启动celery
celery -A mycelery.main worker --loglevel=info

# 注意: ValueError: not enough values to unpack (expected 3, got 0)问题
pip install eventlet   
celery -A celery_tasks worker -l info -P eventlet
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值