Celery异步调度框架(二)与Django结合使用
配置Celery与Django结合
需要安装的插件
# 用于在Django中执行任务
pip install django-celery-beat
# 这个是把任务执行结果保存到django-orm中也就是数据库中的插件
pip install django-celery-results
# 集成到Django admin中的Celery管理插件
pip install django-celery-admin
创建celery.py文件
在settings.py同级目录下创建celery.py文件,用于创建celery实例
这里设置环境变量可以有另外一种非硬编码的方式
修改__init__.py文件
修改settings.py文件
创建任务
我这里新建了一个app叫做mytasks,其实你在任意现有的app下面建立tasks.py文件都可以。在settings.py文件中的INSTALLED_APPS中把我新建的mytasks安装进来。
调度任务
在mysite这个APP中调用任务
启动worker和Django
进入到项目目录也就是和manage.py的同级目录,命令中写的DjangoDemo是项目名称。为什么写这个名字?其实和之前启动worker是一样的,因为在DjangoDemo中有一个叫做celery.py的文件,如果不叫这个文件就需要DjangoDemo.文件来指定Celery的APP入口文件。
启动Django进行调用
使用Django数据库保存执行结果
修改settings.py文件
再次去调用之前的URL你就会发现数据库有结果,这意味着你以后可以通过task_id从数据库中查询结果。
配置定时任务
在配置文件中写定时任务
启动worker
启动beat服务
在worker上查看结果
其实这里可以看出我这里根本没有启动Django或者说这里跟Django没有什么关系。因为Celery本身也不依赖Django.
通过Web形式配置定时任务
这种形式就需要用到Django了
这里用到了一个新的APP也就是之前需要安装的django_celery_beat
做数据迁移操作
启动Django并打开admin后台
Crontabs就是做计划任务的
Intervals是简单的定时任务,比如每个几秒或者几分钟这种周期性任务
Periodic tasks要执行的任务在这里配置
添加任务
配置好之后启动worker
启动beat服务,这里需要增加一个参数函数是使用数据库中的任务调度配置
celery -A DjangoDemo beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
在worker中查看结果
需要注意的是每次修改数据库的定时任务执行配置你都需要重启beat服务,否则它无法感知这个变化。
监控
这里就用到Flower了,这个flower可以安装到其他机器,我这里就安装到其他服务器上然后运行centos 7默认的也是Python2.7 我自己安装了Python3.7 所以我进入到编译安装后的目录里/usr/local/python3/bin中,然后pip3 install flower安装完毕后运行。
然后我在笔记本上启动一个worker
打开flower的界面
通过命令调用一次任务
Celery异步调度框架(二)与Django结合使用的更多相关文章
- Celery异步调度框架(一)基本使用
介绍 之前部门开发一个项目我们需要实现一个定时任务用于收集每天DUBBO接口.域名以及TOMCAT(核心应用)的访问量,这个后面的逻辑就是使用定时任务去ES接口抓取数据存储在数据库中然后前台进行展示. ...
- celery异步任务框架
目录 Celery 一.官方 二.Celery异步任务框架 Celery架构图 消息中间件 任务执行单元 任务结果存储 三.使用场景 四.Celery的安装配置 五.两种celery任务结构:提倡用包 ...
- Celery异步任务队列/周期任务+ RabbitMQ + Django
一.Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celer ...
- celery异步消息处理框架
Celery 1.什么是Clelery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组 ...
- celery 分布式异步任务框架(celery简单使用、celery多任务结构、celery定时任务、celery计划任务、celery在Django项目中使用Python脚本调用Django环境)
一.celery简介: Celery 是一个强大的 分布式任务队列 的 异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务(async tas ...
- 异步任务利器Celery(二)在django项目中使用Celery
Celery 4.0支持django1.8及以上的版本,低于1.8的项目使用Celery 3.1. 一个django项目的组织如下: - proj/ - manage.py - proj/ - __i ...
- Django --- celery异步任务与RabbitMQ模块
一 RabbitMQ 和 celery 1 celery Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务, ...
- Django使用Celery异步任务队列
1 Celery简介 Celery是异步任务队列,可以独立于主进程运行,在主进程退出后,也不影响队列中的任务执行. 任务执行异常退出,重新启动后,会继续执行队列中的其他任务,同时可以缓存停止期间接收 ...
- Django商城项目笔记No.6用户部分-注册接口-短信验证码实现celery异步
Django商城项目笔记No.4用户部分-注册接口-短信验证码实现celery异步 接上一篇,如何解决前后端请求跨域问题? 首先想一下,为什么图片验证码请求的也是后端的api.meiduo.site: ...
随机推荐
- C#备份及还原数据库的实现
使用前要导入SQLDMO.dll 下载地址:http://down.51cto.com/data/853937 1.在用户的配置时,我们需要列出当前局域网内所有的数据库服务器,并且要列出指定服务器的所 ...
- ubuntu 命令整合1
一.linux命令基本格式 命令名[选项] [参数] 注意: 命令名区分字母大小写 命令名必须有 选项.参数可以没有,选项一般使用减号开头二.具体Linux命令 1.who 显示登录系统中的用户的信息 ...
- java线程interrupt、interrupted 、isInterrupted区别
前言 在分析interrupt之前,应该先了解java里线程有5种状态,其中有一个阻塞状态,interrupt和阻塞有关. interrupt() 方法 作用于要中断的那个线程. interrupt( ...
- Codeforces Round #483 (Div. 2)
题目链接: https://cn.vjudge.net/contest/229761 A题: n个数字,两个人轮流去数字,直到剩下最后一个数字为止,第一个人希望剩下的数字最小,第二个人希望数字最大,最 ...
- Mongodb数据库操作
mysql/mongodb对比 CREATE TABLE USERS (a Number, b Number) Implicit or use MongoDB::createCollection() ...
- 用react重构个人网站 3-23
1: :before 选择器在被选元素的内容前面插入内容 2: float是什么?浮动在CSS中的作用 3:CSS运用在React中的两种方式 使用className属性,CSS内容就用link加 ...
- 让站点支持MarkDown语法~(转)
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式.Markdown的语法简洁明了.学习容易,而且功能比纯文本更强,因此有很多人 ...
- MySQL基本命令1
在ubuntu系统中操作命令:登录:mysql -uroot -p启动:service mysql start停止:service mysql stop重启:service mysql restart ...
- 提示“本地连接没有有效的ip配置-未修复“窗口
很多人在使用电脑时可能会遇到了这样一个网络问题,电脑无法连接网络,使用自带网络诊断工具诊断提示:"本地连接没有有效的ip配置".这种网络故障多数是出在使用路由器共享上网的windo ...
- ConcurrentLinkedQueue简介
ConcurrentLinkedQueue是一个基于链表的无界线程安全队列,非阻塞实现方式,先进先出,适合高并发的场景. 非阻塞的性能较好,采用CAS,避免加锁的时间,保证数据一致性. 采用" ...