配置文件:celery.py
# 启动后自动取记载APP下的tasks.py文件
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
# 设置环境变量
from HArtPro import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'HArtPro.settings')
# 创建Celery对象
app = Celery('hart')
# 加载配置
app.config_from_object('django.conf:settings')
# 自动发现task的异步任务
app.autodiscover_tasks(lambda :settings.INSTALLED_APPS)
这种由djcelery调用,所以需要在settings.CELERYBEAT_SCHEDULER设置一个调度器,这里使用数据库。
djcelery提供了一些Model(定义在djcelery/models.py文件)
描述定时任务。重要字段有:
name: 字符串,标识符
task: 字符串,任务函数/类所在的路径,一般是celery_imports + function name。
interval:外键指向intervalschedule,表示每隔多少时间执行
crontab:外键指向crontabschedule,表示在某一时刻执行。
enabled:是否生效
intervalschedule
表示时间间隔,有两个参数:
every:正数;period间隔单位。比如intervalschedule(every=2, period='day')表示每隔2天
crontabschedule
表示某一时刻,有minute、hour、day_of-week、day_of_month、day_of_year它们的组合意义,参见cron时间表示法,比如0 0 * 10 * 表示每个月的10号凌晨。