经常用python开发web应用时,会涉及到定时任务的脚本,以前用linux自带的crontab来操作,但是感觉不太接地气,后来发现用celery+django 可以方便的实现!
安装软件环境如下:
python 2.7.5
Django==1.8.2
celery==3.1.18
celery-with-redis==3.0
django-celery==3.1.16
MySQL-python==1.2.3
supervisor==3.1.3
使用pip方式安装完以上软件,并且默认系统已经安装了redis和mysql服务器!
一 首先创建project:
django-admin.py createproject picha
然后创建名称为demo的app:
django-admin.py startapp demo
项目的目录结构为:
二 下面在settings文件中配置celery相关的配置:
1
2
3
4
5
6
7
8
9
10
11# CELERY STUFF
import djcelery
djcelery.setup_loader()
BROKER_URL ='redis://localhost:6379'
CELERYBEAT_SCHEDULER ='djcelery.schedulers.DatabaseScheduler' # 定时任务
CELERY_RESULT_BACKEND ='djcelery.backends.database:DatabaseBackend'
CELERY_RESULT_BACKEND ='redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER ='json'
CELERY_RESULT_SERIALIZER ='json'
CELERY_TIMEZONE ='Asia/Shanghai'
1
2
3
4
5
6
7
8
9
10INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions