celery的高级使用

前面两篇博客主要讲的是celery的基本使用方式以及常用的目录结构。这一篇主要讲celery定时任务的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
其实celery定时任务非常的简单,我们只需要在celery实例化的那个文件夹中进行一些配置即可
然后使用下述命令启动自动提交任务的服务:
celery beat -A celery_task -l info
celery worker -A celery_task -l info -P eventlet

实例:
from celery import Celery

broker = 'redis://127.0.0.1:6379/1'
backend = 'redis://127.0.0.1:6379/2'
app = Celery(broker=broker, backend=backend, include=['celery_task.tasks'])

# 时区
app.conf.timezone = 'Asia/Shanghai'
# 是否使用UTC
app.conf.enable_utc = False

# 任务的定时配置
from datetime import timedelta
from celery.schedules import crontab
app.conf.beat_schedule = {
'low-task': {
'task': 'celery_task.tasks.low', #任务的位置
'schedule': timedelta(seconds=3), #距离执行的时间,放一个时间对象
# 'schedule': crontab(hour=8, day_of_week=1), # 每周一早八点
'args': (300, 150), #任务所需的参数
}
}

按上述方式进行配置后,我们便不需要使用delay去提交任务,而是一到执行时间celery便会自动执行