项目结构(celery和tasks文件名称是固定的,update为自己编写命名的方法)
1.新建celery配置,如果服务器之前有redis,则直接用redis配置
# celery.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from celery import Celery
import os
import traceback
from celery.schedules import crontab
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mainsite.settings")
app = Celery(backend='redis://localhost:6379', broker='redis://localhost:6379', timezone='Asia/Shanghai')
app.autodiscover_tasks(['workRecord.celeryTask'],force=True)
# app.config_from_object('django.conf:settings')
# app.autodiscover_tasks()
# celery -A workRecord worker -l info
# tasks.py
#coding:utf8
#from __future__ import absolute_import, unicode_literals
from celery import app
import time
@app.task
def add(key_name, origin_data):
from workRecord.update_xxx import update
update(key_name, origin_data)
print "已更新统计表!"
return {"msg":"success"}
2.在views.py文件中调用
if settings.DEBUG == False:
from workRecord.tasks import add
sync = add.delay(key_name, origin_data)
# 下面是不用celery的情况
# from workRecord.update_xxx import update
#update(key_name, current_month, origin_data)