使用celery和redis配合实现异步任务队列 默认已经安装celery和django以及redis并且已经redis已经配置好 创建好自己的django工程 在工程中的setting.py文件中配置celery
import djcelery ###
djcelery.setup_loader() ###
CELERY_TIMEZONE='Asia/Shanghai'
BROKER_URL='redis://127.0.0.1:16379'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' ###
在自己项目下添加celery.py
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app名.settings')
app = Celery('app名')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
修改app下的init.py
#!/bin/python
from __future__ import absolute_import
from .celery import app as celery_app
在tasks.py 添加tesk
from celery import task
from celery import shared_task
@task()
def add(x, y):
return x + y
@shared_task
def mul(x, y):
return x * y
在接口函数中实现
from django.http import JsonResponse
from app名 import tasks
def index(request,*args,**kwargs):
res=tasks.add.delay(1,3)
#任务逻辑
return JsonResponse({'status':'successful','task_id':res.task_id})
启动celery
python manage.py runserver 0.0.0.0:8001
python manage.py celery beat
python manage.py celery worker -c 6 -l debug