django中的celery 异步任务和定时任务

文章目录

  • 一、celery的引入及其相关配置
    • 1.引入celery的原因
    • 2.celery组成部分
    • 3.django+celery+redis
      • ① 安装
      • ② 安装redis服务
      • ③ 启动redis服务
  • 二、Django的celery异步任务
    • 1.django-celery的作用
    • 2.配置文件中的设置
      • ① 安装注册
      • ② djcelery的配置
      • ③ 创建一个子应用
      • ④ 在项目主目录中创建一个文件(celery.py) , 用来编写celery的控制文件
      • ⑤ 编写任务文件 tasks.py创建第一个任务
      • ⑥ 启动worker(确保是在celery启动的情况下)
      • ⑦ 创建带参数的任务
  • 三、celery 的定时任务
    • 1.配置settings中
    • 2.启动定时任务

一、celery的引入及其相关配置


1.引入celery的原因


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


2.celery组成部分


  • worker 工人

    执行任务的单元

  • broker 消息中间件 即中间人

    用来在服务和woker中传递消息
    redis RabbitMQ 两种类型数据库

  • backend 用来存储消息以及celery执行结果

Django封装了celery 叫django-celery

django中的celery 异步任务和定时任务_第1张图片


3.django+celery+redis


① 安装

pip install django-celery
pip install django-redis
pip install redis==2.10.6

② 安装redis服务

解压后在当前文件夹内地址栏输入cmd,进入cmd
在这里插入图片描述
django中的celery 异步任务和定时任务_第2张图片

③ 启动redis服务

进入cmd后
django中的celery 异步任务和定时任务_第3张图片
连接redis服务和关闭redis服务

redis-cli.exe  ## 连接服务

shutdown  ## 关闭服务

django中的celery 异步任务和定时任务_第4张图片


二、Django的celery异步任务


1.django-celery的作用


和之前的开发相比,django-celery只是将任务发布出去,处理耗时操作发送邮件,发送短信 ,爬虫,使用异步任务去实现,使得主进程不会阻塞,web服务只负责发起任务和接受任务的结果,中间执行的过程交给异步任务处理。


2.配置文件中的设置


① 安装注册


django中的celery 异步任务和定时任务_第5张图片


② djcelery的配置


django中的celery 异步任务和定时任务_第6张图片


③ 创建一个子应用


django中的celery 异步任务和定时任务_第7张图片


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


django中的celery 异步任务和定时任务_第8张图片
django中的celery 异步任务和定时任务_第9张图片


⑤ 编写任务文件 tasks.py创建第一个任务


django中的celery 异步任务和定时任务_第10张图片
数据迁移
django中的celery 异步任务和定时任务_第11张图片
只用makemigrations


⑥ 启动worker(确保是在celery启动的情况下)


启动worker

python manage.py celery worker --loglevel=info

django中的celery 异步任务和定时任务_第12张图片
在写好tasks.py和views实例化后启动worker后有
django中的celery 异步任务和定时任务_第13张图片


⑦ 创建带参数的任务


django中的celery 异步任务和定时任务_第14张图片
执行任务
django中的celery 异步任务和定时任务_第15张图片
django中的celery 异步任务和定时任务_第16张图片
django中的celery 异步任务和定时任务_第17张图片


三、celery 的定时任务


1.配置settings中


django中的celery 异步任务和定时任务_第18张图片


2.启动定时任务


python manage.py celerybeat --loglevel=info

启动之前,确保redis,worker启动,再去启动定时任务
django中的celery 异步任务和定时任务_第19张图片
django中的celery 异步任务和定时任务_第20张图片


你可能感兴趣的:(#,python,web开发)