Django中使用Celery

一.配置储值数据,本教程采用redis储值,在setting.py添加配置:
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/2'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/2'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_RESULT_EXPIRES = 30 * 24 * 60 * 60
CELERY_MAX_TASKS_PER_CHILD = 10
二.在wsgi.py同级目录下新建celery.py:
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

# 设置django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectNmae.settings')
# 项目名称
app = Celery('projectNmae')
# 使用CELERY_ 作为前缀,在settings中写配置
app.config_from_object('django.conf:settings', namespace='CELERY')
# 发现任务文件每个app下的tasks.py
app.autodiscover_tasks()
三.编辑wsgi.py同级目录下的__init__.py:
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ['celery_app']
四.在相应的app下面新建tasks.py文件:
from __future__ import absolute_import, unicode_literals
from celery import shared_task
import celery

class BaseTask(celery.Task):
    max_retries = 3
    def on_failure(self, exc, task_id, args, kwargs, einfo):
        print(f"Celery task [{task_id}] failed: [{einfo}], args: [{args}]")

    def on_success(self, retval, task_id, args, kwargs):
        print(f"Celery task [{task_id}] success: {retval}")

    def on_retry(self, exc, task_id, args, kwargs, einfo):
        print(f"Celery task [{task_id}] retry: {einfo}")


@celery.task(base=BaseTask)
def add(x, y):
    return x + y
五.启动worker:
celery worker -A projectNmae -l debug #调试模式启动
celery worker -A projectNmae -l info  #标准模式启动

win10上运行celery4.x 会报错:
Celery ValueError: not enough values to unpack (expected 3, got 0)
需要先安装eventlet包:pip install eventlet
启动worker的时候在最后加一个参数: -P eventlet
六.触发任务:
from django.http import JsonResponse
from app01 import tasks

def index(request,*args,**kwargs):
    res=tasks.add.delay(1,3)
    #任务逻辑
    return JsonResponse({'status':res.status,'task_id':res.task_id})

在这里插入图片描述

reids可视化中查看执行结果

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会代码的小林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值