Django中Celery简介
初识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简介相关推荐
- 任务队列:celery快速入门及django中celery的用法
文章目录 一.celey的简介 1.1 celery的工作机制 1.2 安装celery(5.2版本) 二.celery快速入门 2.1 选择broker 2.2 celery的简单使用 2.2.1 ...
- Django 中celery的使用
1.django应用Celery django框架请求/响应的过程是同步的,框架本身无法实现异步响应. 但是我们在项目过程中会经常会遇到一些耗时的任务, 比如:发送邮件.发送短信.大数据统计等等,这些 ...
- Django中celery配置总结
情景: 用户发起request,并等待response返回.在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间, 造成不好的用户体验,比如发送邮件.手机验证码等. 使用celer ...
- celery 可视化_Django中Celery的实现介绍(一)
Django中Celery的实现 Celery介绍 Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度. 上图展示的是Celery ...
- Django+redis+celery实现异步任务
1 Django中的异步请求 Django Web中从一个http请求发起,到获得响应返回html页面的流程大致如下:http请求发起 -- http handling(request解析) -- u ...
- django中使用celery简单介绍
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...
- Django 中使用Celery实现异步任务
1.在settings.py 同级目录下,新增一个celery.py的文件 需要注意的是:你的项目目录名要和配置一样 例如我的项目目录名就是 base_django_api 我的目录结构如下: # c ...
- Django(Celery+日志)
celery文档参考:http://docs.jinkan.org/docs/celery/ 同步请求:所有逻辑处理.数据计算任务在View中处理完毕后返回response.在View处理任务时用户处 ...
- django中的缓存以及跨域
django中的缓存 先来了解以下问题?(面试会问) 如何提高网站的并发量: QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查询次数, ...
最新文章
- 我的学习笔记_Windows_HOOK编程 2009-12-03 11:19
- sql server(常用)
- eureka多了一个莫名其妙的服务_SpringCloud 服务注册与发现组件 Eureka
- java 分批同时处理_java中List集合分批处理
- mysql俩个表之间关联语法_MySQL多表关联SQL语句调优
- 题解——loj6278 数列分块入门2 (分块)
- 绝地求生进游戏显示服务器未正常运行,绝地求生BE服务器未正常运行怎么办 BE服务器未运行解决方法...
- clickhouse-小结 mutation操作 视图
- 矩阵运算_Eigen使用_旋转矩阵/角轴/欧拉角/四元数相互转换
- I2C(smbus、pmbus)、SPI
- Rootkit检测技术发展现状
- java基础语法笔记
- 【PROTEUS】使用PROTEUS与电脑串口调试助手进行通讯
- HTML网页设计结课作业——基于HTML+CSS仿学校官网页面
- RS232、RS485及RS422有什么区别
- Java SE 6.0实现高质量桌面集成开发
- 显示器接口_显示器接口类型怎么选,4种主流接口要了解
- 阿里达摩院数学竞赛新一轮考题曝光,李永乐老师曾给出第一题详细解答
- 云服务器对网站用户的优势
- Cocos Creator - 制作精灵帧动画