本文共 1750 字,大约阅读时间需要 5 分钟。
Celery为Django提供后台执行以及定时执行功能。
一、安装:
1、安装依懒包:
1 2 3 | tar xvf kombu-3.0.35. tar .gz cd kombu-3.0.35 /usr/local/python27/bin/python setup.py install |
1 2 3 | tar xvf billiard-3.3.0.23. tar .gz cd billiard-3.3.0.23 /usr/local/python27/bin/python setup.py install |
2、安装django-celery:
1 2 3 | tar xvf django-celery-3.1.17. tar .gz cd django-celery-3.1.17 /usr/local/python27/bin/python setup.py install |
二、配置整合Django:
settings 添加配置:
1 2 3 4 5 | import djcelery djcelery.setup_loader() BROKER_URL = 'django://' CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' |
installed_apps添加djcelery,kombu.transport.django
1 2 3 4 5 6 7 8 9 10 11 12 13 | INSTALLED_APPS = ( 'django.contrib.admin' , 'django.contrib.auth' , 'django.contrib.contenttypes' , 'django.contrib.sessions' , 'django.contrib.messages' , 'django.contrib.staticfiles' , 'DjangoUeditor' , 'django_jinja' , 'djcelery' , 'kombu.transport.django' , 'TestCelery' , ) |
三、创建task
新建App:TestCelery,在该App下新建tasks.py文件:
1 2 3 4 5 | from celery import task @task () def add(x, y): return x + y |
四、启动进程
在manage.py中加入:
1 2 | import django django.setup() |
不加的话celery执行task时会报错
1 | python manage.py celery worker --loglevel=info |
五、测试:
1 2 3 | python manage.py shell >>> from myapp.tasks import add >>> add.delay(2, 2) |
六、测试定时任务:
启动celerybeat:
1 | python manage.py celery beat |
在django admin后台添中任务:
Name: 这一定期任务的注册名
Task (registered): 可以选择所有已经注册的task之一, 例如前面的add function
Task (custom): task的全名, 例如myapp.tasks.add, 但最好还是用以上项
Enabled: 是否开启这一定期任务
Interval: 定期任务的间隔时间, 例如每隔5分钟
Crontab: 如果希望task在某一特定时间运行, 则使用Unix中的Crontab代替interval
Arguments: 用于传参数到task中
Execution Options: 更高级的设置, 在此不详细说明, 请查看celery官方文档
celerybeat会把task发送到celery worker 中执行
暂时测试到这里!
本文转自运维笔记博客51CTO博客,原文链接http://blog.51cto.com/lihuipeng/1773158如需转载请自行联系原作者
lihuipeng