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: ...
随机推荐
- removeElement
Description: Given an array and a value, remove all instances of that value in place and return the ...
- 架构之CDN缓存
CDN缓存 CDN主要解决将数据缓存到离用户最近的位置,一般缓存静态资源文件(页面,脚本,图片,视频,文件等).国内网络异常复杂,跨运营商的网络访问会很慢.为了解决跨运营商或各地用户访问问题,可以在重 ...
- seek()对中文偏移测试
当前目录下创建"中文测试.txt"文件,写入: 我是大好人aaa我是大坏人bbb f = open('中文测试.txt', 'r+', encoding='utf-8') # f. ...
- Pycharm的相关设置和快捷键集合
原文参考地址:python 环境搭建及pycharm的使用 一.相关设置 1.主题和字体 主题选这个 字体大小在这里设置 二.快捷键 1.编辑(Editing)Ctrl + Space 基本的代码完成 ...
- NetCore版RPC框架NewLife.ApiServer
微服务和消息队列的基础都是RPC框架,比较有名的有WCF.gRPC.Dubbo等,我们的NewLife.ApiServer建立在网络库NewLife.Net之上,支持.Net Core,追求轻量级和高 ...
- MySQL字段的说明和备注信息
转自:http://www.2cto.com/database/201202/119996.html 在MySQL下运行完下面这个建表语句后. 如何从数据字典中,检索出这个表的字段的相关信息? DRO ...
- posix,perl正则表达式区别
1.正则表达式(Regular Expression,缩写为regexp,regex或regxp),又称正规表达式.正规表示式或常规表达式或正规化表示法或正规表示法,是指一个用来描述或者匹配一系列符合 ...
- bug排查小结
mysql cpu利用率偏高,并且长时间居高不下. show processlist 发现有一个单表查询的sql语句出现的频率比较高, 这个单表查询中规中矩,where语句中条件都使用”=“连接,再加 ...
- SwipeListView 详解 实现微信,QQ等滑动删除效果
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/28508769 今天看别人项目,看到别人使用了SwipeListView,Goog ...
- rabbit入门教程
简介 rabbitmq是一个消息代理系统,为应用提供一个通用得消息发布,接受平台,为应用提供非阻塞的消息系统,方便进行异步处理. 优点 消息的可靠性.持久化消息,消息接受确认,消息重传等可靠机制. 灵 ...