初识Celery:

Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,可将一些耗时的任务放入该消息队列中处理,一些定时任务也可以放入队列中自动执行,如定期去统计日志,数据备份,或者其他的统计任务。

Celery基本工作流程:

Celery的安装与配置

pip install celery
pip install celery-with-redis
pip install django-celery
apt install redis-server

三方库的安装

django中的配置:

ALLOWED_HOSTS = ['*']
INSTALLED_APPS = (...'djcelery',}import djcelery
djcelery.setup_loader()
BROKER_URL='redis://localhost:6379/1' #任务队列存放的位置
CELERY_CONCURRENCY=2  #设置worker的并发数量
CELERY_RESULT_BACKEND = 'redis://localhost:6379/2' #结果存放的位置

View Code

在settings的同级目录下新建一个celery.py的文件

from __future__ import absolute_import  #绝对路径导入
from celery import Celery
from django.conf import settings
import os#设置系统的环境配置用的是Django的
os.environ.setdefault('DJANGO_SETTING_MODULE','day9_ex.settings')
#实例化celery
app = Celery('mycelery')
#设置时区
app.conf.CELERY_TIMEZONE = 'Asia/Shanghai'
#指定celery的配置来源 用的是项目的配置文件settings.py
app.config_from_object('django.conf:settings')
#让celery 自动去发现我们的任务(task)
app.autodiscover_tasks(lambda : settings.INSTALLED_APPS)    

View Code

在settings.py的同级目录的__init__.py文件中导入

 #要写在第一行
from __future__ import absolute_import  #导入工程目录下celery中的app并起别名
from day9_ex.celery import app as celery_app 

View Code

Celery的使用

在需要使用异步任务的app目录下新建tasks.py,将要执行的异步任务放在这里面

from celery import task
import time@task
def test(n):for i in range(n):print(i)time.sleep(3)

View Code

在views视图函数中进行调用

from django.http import HttpResponse
from django.shortcuts import render
from app.tasks import testdef test_celery(req):test.delay(6)return HttpResponse('ok')

View Code

开始执行之前要先进行数据库表的迁移

然后启动worker,命令为python manage.py celery worker --loglevel=info (或者celery -A 工程名 worker -I info)      (PS:日志级别可以不写)

然后在浏览器输入url启动项目

注意:修改tasks.py的内容后要重启celery的服务!

定时任务的配置:
在上述配置的基础上在settings.py中加入下面配置

from datetime import timedeltaCELERYBEAT_SCHEDULE = {'schedule-test': {'task': 'app.tasks.test2',   #指定要执行的函数'schedule': timedelta(seconds=6),   # 执行的计划时间,每6秒执行一次,可自定义'args': ()  #参数
    },}

View Code

还可使用下面这种配置

from celery.schedules import crontabCELERYBEAT_SCHEDULE = {'schedule-test': {'task': 'app.tasks.test2',  #指定要执行的函数'schedule': crontab(minute=48,hour=11),   # 指定具体执行的计划时间'args': ()   #参数
    },}

View Code

crontab的参数设置如上图,也可以一个参数设置多个值,如day_of_week='1,2',表示每周一周二。

具体使用同异步处理。

先启动python manage.py celery worker,再启动python manage.py celery beat

注意:你的任务一定要确保是可以正常执行的

转载于:https://www.cnblogs.com/wusir66/p/9892209.html

Django中Celery简介相关推荐

  1. 任务队列:celery快速入门及django中celery的用法

    文章目录 一.celey的简介 1.1 celery的工作机制 1.2 安装celery(5.2版本) 二.celery快速入门 2.1 选择broker 2.2 celery的简单使用 2.2.1 ...

  2. Django 中celery的使用

    1.django应用Celery django框架请求/响应的过程是同步的,框架本身无法实现异步响应. 但是我们在项目过程中会经常会遇到一些耗时的任务, 比如:发送邮件.发送短信.大数据统计等等,这些 ...

  3. Django中celery配置总结

    情景: 用户发起request,并等待response返回.在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间, 造成不好的用户体验,比如发送邮件.手机验证码等. 使用celer ...

  4. celery 可视化_Django中Celery的实现介绍(一)

    Django中Celery的实现 Celery介绍 Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度. 上图展示的是Celery ...

  5. Django+redis+celery实现异步任务

    1 Django中的异步请求 Django Web中从一个http请求发起,到获得响应返回html页面的流程大致如下:http请求发起 -- http handling(request解析) -- u ...

  6. django中使用celery简单介绍

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...

  7. Django 中使用Celery实现异步任务

    1.在settings.py 同级目录下,新增一个celery.py的文件 需要注意的是:你的项目目录名要和配置一样 例如我的项目目录名就是 base_django_api 我的目录结构如下: # c ...

  8. Django(Celery+日志)

    celery文档参考:http://docs.jinkan.org/docs/celery/ 同步请求:所有逻辑处理.数据计算任务在View中处理完毕后返回response.在View处理任务时用户处 ...

  9. django中的缓存以及跨域

    django中的缓存 先来了解以下问题?(面试会问) 如何提高网站的并发量: QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查询次数, ...

最新文章

  1. 我的学习笔记_Windows_HOOK编程 2009-12-03 11:19
  2. sql server(常用)
  3. eureka多了一个莫名其妙的服务_SpringCloud 服务注册与发现组件 Eureka
  4. java 分批同时处理_java中List集合分批处理
  5. mysql俩个表之间关联语法_MySQL多表关联SQL语句调优
  6. 题解——loj6278 数列分块入门2 (分块)
  7. 绝地求生进游戏显示服务器未正常运行,绝地求生BE服务器未正常运行怎么办 BE服务器未运行解决方法...
  8. clickhouse-小结 mutation操作 视图
  9. 矩阵运算_Eigen使用_旋转矩阵/角轴/欧拉角/四元数相互转换
  10. I2C(smbus、pmbus)、SPI
  11. Rootkit检测技术发展现状
  12. java基础语法笔记
  13. 【PROTEUS】使用PROTEUS与电脑串口调试助手进行通讯
  14. HTML网页设计结课作业——基于HTML+CSS仿学校官网页面
  15. RS232、RS485及RS422有什么区别
  16. Java SE 6.0实现高质量桌面集成开发
  17. 显示器接口_显示器接口类型怎么选,4种主流接口要了解
  18. 阿里达摩院数学竞赛新一轮考题曝光,李永乐老师曾给出第一题详细解答
  19. 云服务器对网站用户的优势
  20. Cocos Creator - 制作精灵帧动画

热门文章

  1. Cocos2d-x编程中的runOnUiThread方法和runOnGLThread方法剖析
  2. Linux修改时区和时间
  3. 77种互联网盈利创新模式(7)
  4. ORM框架之Spring Data JPA(二)spring data jpa方式的基础增删改查
  5. 举例说明TCP/IP
  6. 谈谈未来简书首页拒稿界面的设计思路
  7. GDAL使用DEM数据计算山体阴影(Hillshade)
  8. go tcp连接_在Go中构建并发TCP服务器样例
  9. 未解决的问题记录——关于easyui中datagrid的冻结列右侧冻结
  10. VSCode插件开发全攻略