安装
pip install celery
pip install django-redis
pip install eventlet
redis 配置
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100}
}
}
}
目录结构
- proj/
- celery_task
- celery.py
- task1.py
- manage.py
- proj/
- __init__.py
- settings.py
- urls.py
创建实例对象
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
app = Celery(__name__,broker=broker,backend=backend,include=('celery_task.task1'))
app.config_from_object('django.conf:settings', namespace='CELERY')
from datetime import timedelta
from celery.schedules import crontab
app.conf.beat_schedule = {
'update_task':{
'task': 'celery_task.task1_viewnum_flush.about_author_update',
'schedule': timedelta(seconds=60*60),
},
'up_task': {
'task': 'celery_task.task1_viewnum_flush.view_num_update',
'schedule': crontab(minute=1,hour=1)
},
}
配置文件
CELERY_timezone = 'Asia/shanghai'
CELERY_enable_utc = False
任务
from .celery import app
from user import models,ser
@app.task
def view_num_update():
number = models.Visit.objects.first()
number.today_num = 0
number.save()
return True