前期准备
新django版本建议直接使用celery。
- 安装celery
- 安装rabbitmq
安装celery
在终端直接输入
pip install celery
可直接安装
安装rabbitmq
sudo yum instal rabbitmq-server
使用docker
docker run -d -p 5462:5462 rabbitmq
celery使用中间件推荐reids跟rabbitmq,官方推荐rabbitmq,但是使用redis比较方便。
新建django项目
项目目录
使用python3.6以上,新建django项目 cas(随便取)
在cas/cas 目录下新建 celeryConfig,celery,tasks三个py文件目录结构如下:
celeryConfig 配置文件
from celery.schedules import crontab
BROKER_TRANSPORT_OPTIONS = {
'visibility_timeout': 43200} # 任务最大处理时长
BACKEND='amqp://localhostt' #该 backend 参数为指定的结果后端 URL它主要用于跟踪任务的状态的信息,默认情况下禁用结果后端,在此实例中已经开启了该功能,主要便于后续检索,可能在会在程序中使用不同的结果后端。每一个后端都有不同的优点和缺点,如果不需要结果,最好禁用。也可以通过设置 @task(ignore_result=True) 参数,针对单个任务禁用。
BROKER='amqp://localhost' #中间人(Broker)URL,建议使用认证加密
CELERY_TIMEZONE='Asia/Shanghai'
CELERY_ENABLE_UTC=True
task_routers = {
'cas.tasks.add': {
'queue': 'add_project'}
}, #为某项任务配置专门的路由,只处理相关事物
CELERY_IGNORE_RESULT = True, # 因为不需要结果返回,故禁止了
CELERYBEAT_SCHEDULE = {
"test1": {
"task": "cas.tasks.everyday_run_command", # 执行的函数
"schedule": crontab(minute=