Django-celery异步

celery的简介
  • celery介绍
    • 用户发起request,并等待response返回。在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验,比如发送邮件、手机验证码等。使用celery后,情况就不一样了,将耗时的程序放到celery中执行。主程序继续执行其他功能。
  • celery和django的关系
    • 任务task:就是一个Python函数,定义需要交给celery处理的任务。
    • 队列queue:需要worker执行的任务会先加到queue中。
    • 工人worker:在一个新进程中,负责从queue中取出任务执行。
    • 代理人broker:负责调度,在布置环境中使用redis,用来存储queue列队。
配置celery
  • 安装celery相关的包
  • 在setting中安装celery应用
  • 在setting中配置任务和代理模块
    • import djcelery
      • 配置celery环境
      • 配置中间人的url路径
      • 配置任务查找路径

使用selery代理任务
  • 在应用的目录下创建tasks.py的文件,并创建应用的celery任务
      • @task: 对函数进行装饰,声明该函数是通过celery  worker来执行的函数
  • 在视图函数中调用celery任务
      • 调用celery任务要在函数名后面加.delay,表示通过celery异步执行任务;
      • 因为task函数是在woker中执行的,我们在函数内生成的一些变量,在worker中可能因为没有我们使用的方法和函数,不能获取到,所以我们使用的变量等,都通过参数传递给task任务;
  • 开启服务器
    • python manage.py runserver
  • 开启redis服务
    • sudo service redis start
  • 启动celery-worker
    • python manage.py celery worker -l info
      • -l info 表示打开日志

刘小恺(Kyle) wechat
如有疑问可联系博主