from __future__ import absolute_import, unicode_literals
import os
from celery import Celery, platforms
from kombu import Exchange, Queue
from datetime import timedelta
from celery.schedules import crontab
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ops.settings')
app = Celery('ops')
#
配
置
celery
class Config:
BROKER_URL = 'redis://ip:6379/1'
# broker
# CELERY_RESULT_BACKEND = 'redis://ip:6379/2' # backend
CELERY_RESULT_BACKEND = 'django-db'
# backend
结
果
存
储
为
数
据
库
CELERY_ACCEPT_CONTENT = ['application/json']
#
指
定
任
务
接
受
的
内
容
类
型
(
序
列
化
)
CELERY_TASK_SERIALIZER = 'json'
#
任
务
的
序
列
化
⽅
式
CELERY_RESULT_SERIALIZER = 'json'
#
任
务
执
⾏
结
果
的
序
列
化
⽅
式
CELERY_TIMEZONE = 'Asia/Shanghai'
#
时
区
设
置
,
计
划
任
务
需
要
,
推
荐
Asia/Shanghai
CELERY_TASK_RESULT_EXPIRES = 60 * 60
# celery
任
务
执
⾏
结
果
的
超
时时
间
CELERY_ANNOTATIONS = {'*': {'rate_limit': '200/s'}}
#
速
率
限
制
为
每
秒
最
多
执
⾏
200
个
该
类
型
的
任
务
。
# celery
定
时
任
务
CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler"
# celery
并
发
量
# CELERYD_CONCURRENCY = 10
CELERYD_MAX_TASKS_PER_CHILD = 16
#
每
个
worker
执
⾏
了
多
少
任
务
就
会
死
掉
,
防
⽌
内
存
泄
漏
# Using a string here means the worker don't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
# should have a `CELERY_` prefix.
app.config_from_object(Config)
# Load task modules from all registered Django app configs.
app.autodiscover_tasks()
#
允
许
root
⽤
⼾
运
⾏
celery
platforms.C_FORCE_ROOT = True