Django(十四):异步任务celery(安装celery+redis+配置settings)

前言

在web开发中,要给用户发送邮件,发送短信,都属于耗时的操作,会导致给用户的响应时间边长,这种情况的解决办法,给用户先返回一个响应,不要影响用户的使用,将这些耗时的操作,放在后台执行,例如新开一个进程,celery就是解决这个问题

celery组成部分

  • worker :工人,执行任务的单元
  • broker :消息中间件 即中间人     用来在服务和worker中传递消息   redis,RabbitMQ
  • backend:用来存储消息以及celery执行结果

django+celery+redis

安装

pip install django-celery

pip install django-redis

pip install redis==2.10.6

启动redis服务

链接redis服务和关闭redis服务

Django的celery异步任务

和之前的开发相比,django-celery只是将任务发布出去,处理耗时操作

发送邮件,发送短信,爬虫,使用异步任务去实现,使得主进程不会阻塞,web服务只是负责发起任务和接收任务的结果,中间执行的过程交给异步任务处理。

安装注册

 

创建一个子应用

在项目主目录总创建一个文件(celery.py),用来编写celery的控制文件

 

编写任务文件 tasks.py

创建第一个任务

数据迁移

启动celery

python manage.py celery worker -- loglevel=info

创建带参数的任务

执行任务

celery的定时任务

配置settings中

启动定时任务

启动之前,确保redis,worker启动,再去启动定时任务

python celery定时任务的写法

timedelta
crontab
    crontab(hour = "*/2")   每隔两小时执行一次
    crontab(minute = 0,hour = "*/2")   每隔两小时的0分执行一次
    crontab(minute = 0,hour = 0,day_of_month="2-31/2" )   偶数天执行
    crontab(minute = 0,hour = 0,day_of_month="1",month_of_year="5")  每年的五月1号执行

 

 

 


版权声明:本文为Gym987原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。