在settings.py里installed_apps里添加 djcelery
需安装django-celery
在settings末端添加
import djcelery djcelery.setup_loader() BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'amqp://guest:guest@localhost:5672//'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_IMPORTS = ('hello.tasks', ) CELERY_TIMEZONE = TIME_ZONE CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' CELERY_ALWAYS_EAGER = True
新建一个app
里面新建一个tasks.py
from celery import task @task def add(x, y): return x+y @task def prints(): print 'xiao'
需安装
sudo apt-get install rabbitmq-server
启动rabbitmq-server
关闭rabbitmq-server -detached
查看状态rabbitmqctl status
运行celery
python manage.py celery worker --loglevel=info
或者后台运行celery
$ nohup django-admin.py celeryd worker -B --loglevel=info --settings=settings --pythonpath=. &
celery运行定时任务
python manage.py celery beat
查看celery是否正常运行
$ ps aux | grep celery
关闭celery
ps auxww | grep 'celery worker' | awk '{print $2}' | xargs kill -9
进入Django的admin后台,进入Djcelery
栏目,一共有四个选项:
Crontabs
在此选项中,可以创建定时执行的任务需要的定时时间。
Intervals
在此选项中,可以创建间隔执行的任务需要时间间隔。
Periodic tasks
在此选项中,创建一个相应的任务,选择任务,需要定时执行的时间或者时间间隔,并保存。
当然,还有其他一些高级的选项,可以尝试使用。
-
Tasks
-
Workers
到此,一个任务便创建成功了。不出意外,创建的任务会如期执行,当然,如果创建的没有 如期执行的,应该依次检查前面的步骤,查看celery是否在运行,创建的task是否报错等等, 一级一级排除错误。