1. 使用RabbitMQ 代理(broker)在客户端和工作执行者之间进行交互
http://www.rabbitmq.com/install-windows.html
安装RabbitMQ 必须先下载安装了erlang 才可以安装RabbitMQ
2.使用pip安装:
pip install kombu
pip install celery
pip install django-celery
一般选择安装了celery会一起安装其他包,不用管其他的包,celery 的版本。celery4.0开始celery beat定时需要单独安装,
celery3.x.x则不需要重新安装celery-beat,直接可以使用,
3.配置
首先在setting中导入
import djcelery
app配置中加入djcelery,
在setting 底部加入
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' djcelery.setup_loader() BROKER_URL = 'amqp://guest@localhost//' BROKER_POOL_LIMIT = 0 CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend' BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 28800}
4.在setting所在的目录下新建celery.py文件加入代码:
from __future__ import absolute_import import os from django.conf import settings from celery import Celery os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'web_cgcontrol.settings') app = Celery('web_cgcontrol') app.config_from_object('django.conf:settings') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) @app.task(bind=True) def debug_task(self): print('Request: {0!r}'.format(self.request))
5.setting所在的目录下,根__init__.py文件下加入:
from .celery import app as celery_app
注:如果使用mysql,那么其中的文件为:
from .celery import app as celery_app import pymysql pymysql.install_as_MySQLdb()
6.编写tasks.py。必须是tasks的名字:
@shared_task(track_started=True) def get_state(url): state = requests.get(url, allow_redirects=False).status_code
return state
获取网页的状态码为例
使用python manage.py makemigrations,和 python manage.py migrate迁移数据库,则创建了djcelery的很多表,
添加定时任务即可定时获取网页状态码