安装依赖
这里的依赖库的作用分别是:
celery:核心库
django:核心库
django-celery-beat:用于实现定时任务
django-celery-results:用于获取任务结果
django-redis和redis:是任务底层的驱动依赖,另一种依赖是RabbitMQ,这里更推荐Redis,因为Redis在大多数项目中都能用得到。如果使用RabbitMQ,可能会造成额外的依赖。
eventlet:这个是任务的事件驱动,主要用来启动任务的。
mysqlclient:这个是MySQL数据库的驱动。
配置Celery
首先,我们需要配置应用信息:
这里的django_celery_beat和django_celery_results都自带了很多的模型,要让其能够正常的使用,我们需要在配置了应用以后,执行模型迁移:
接着是配置数据库,这里一般推荐使用MySQL数据库:
接着是配置语言和时区,这点比较重要。
设置broker,这个是最重要的配置:
其他的一些常用配置:
配置定时任务:
更多Crontab定义案例如下所示:
crontab()每分
crontab(minute=0, hour=0)每天午夜
crontab(minute=0, hour='*/3')能被3整除的小时数,3,6,9点等等
crontab(minute=0,``hour='0,3,6,9,12,15,18,21')与前面相同,指定小时
crontab(minute='*/15')每15分钟
crontab(day_of_week='sunday')星期日每分钟
crontab(minute='',``hour='', day_of_week='sun')同上
crontab(minute=0, hour='/2,/3')可以被2或3整除的小时数,除了 1am, 5am, 7am, 11am, 1pm, 5pm, 7pm, 11pm
crontab(minute=0, hour='*/5')可以被5整除的小时
crontab(minute=0, hour='*/3,8-17')8am-5pm之间可以被3整除的小时
crontab(0, 0, day_of_month='2')每个月的第2天
crontab(0, 0,``day_of_month='2-30/2')每月的偶数日
crontab(0, 0,``day_of_month='1-7,15-21')每月的第一和第三周
crontab(0, 0, day_of_month='11',``month_of_year='5')每年的5月11日
crontab(0, 0,``month_of_year='*/3')每个季度首个月份每天
创建Celery对象
在项目目录下创建celery.py:
在项目目录下修改__init__.py:
创建任务
创建index/tasks.py:
配置定时任务
启动任务
开启一个终端,执行以下命令启动任务调度器:
查看任务结果
启动服务,登录到后台可以查看任务结果。
领取专属 10元无门槛券
私享最新 技术干货