celery

基于Django+celery二次开发动态配置定时任务 ( 二)

旧巷老猫 提交于 2020-04-28 05:08:09
一、需求 结合上一篇,使用djcelery模块开发定时任务时,定时任务的参数都保存在djcelery_periodictask表的args、kwargs字段里,并且是json格式。那么,当定时任务多了之后,批量修改定时任务的某个参数时很草蛋, 比如,我的平台目前有100多个定时任务,定时任务的功能就是去生产数据库里执行SQL,并将结果生成excel表,然后自动发送给相关收件人。定时任务的参数就是SQL语句、生产库IP、收件人地址等等,当运营部门说, 我们需要在20个定时任务里增加3个人员的收件人地址,那就头疼了,由于定时任务的所有参数都是以json格式保存在args字段里,没法通过SQL语句批量修改,只能在页面一个一个点!累死了! 而要实现批量修改的功能,之前想到的是以下3种: 1、通过写脚本,先去数据库里把args、kwargs字段的值取出来,然后一个个改,改完再回写到djcelery_periodictask表里,但是感觉还是很繁琐,没有直接写SQL语句来的简单、灵活。(SQL写一个单表查询,python得写10行) 2、使用SQL语句的json语法实现。MySQL5.7以后支持json格式字段的增删改查,语法太复杂,拼了一整天SQL语句,放弃了。 3、抛弃djcelery模块,基于Django + celery 重写一个调度器来实现动态配置定时任务

(转)django使用django-celery与celery

帅比萌擦擦* 提交于 2020-04-28 05:07:54
一.引言 Django是python语言下的一个比较热门的Web框架,越来越多的企业和开发者使用Django实现自己的Web服务器。在Web服务器开发过程中,有时候我们不仅仅是要实现Web服务器端和用户端的简单逻辑交互,还要实现一些定时任务。举出以下的例子:   定期删除或缓存Redis数据库的记录 为了追求更高的数据库访问性能,我把Redis作为MySql数据库的缓存。把常访问的数据放在Redis中,然后定时存储到Mysql中。并且把过期的Redis数据删掉.那么这个时候,就需要定时去完成这个任务。 生成报表    打个比方,你有一个Web电商服务器,每天用户都在会在上面购物。为了很方便的统计出每个用户每个月的消费金额,你在数据库中设计了一张月统计报表。然后使用定时任务,在每个月的1号进行统计,检索数据库,计算出每个用户上个月的的消费金额,逐个存储到月统计报表中。那么这个生成报表的任务就是定时完成的,也就是前面提到的每个月的1号。 定时发送消息 再如:当你的网站上用户生日来临,你希望在他生日那天,给用户的邮箱发送生日快乐的祝福。那么这也是定时任务实现的。 上面这些的例子,都是需要定时任务。在Python中,我们使用的Celery模块完成这项任务。网络上关于Celery的博文很多,大多博文的逻辑比较混乱,因此就有了这篇博文。希望读者读完有个清晰的认识,并且很好的 实战 出来

Django中使用Celery实现定时任务(用djcelery)

那年仲夏 提交于 2020-04-28 05:07:41
对不起,很久以前写的,它很可能已经过时了,由于本人又懒得维护,请不要再参考这篇可能过时的文档了 [TOC] 一.引言 Django是python语言下的一个比较热门的Web框架,越来越多的企业和开发者使用Django实现自己的Web服务器。在Web服务器开发过程中,有时候我们不仅仅是要实现Web服务器端和用户端的简单逻辑交互,还要实现一些定时任务。举出以下的例子:   定期删除或缓存Redis数据库的记录 为了追求更高的数据库访问性能,我把Redis作为MySql数据库的缓存。把常访问的数据放在Redis中,然后定时存储到Mysql中。并且把过期的Redis数据删掉.那么这个时候,就需要定时去完成这个任务。 生成报表    打个比方,你有一个Web电商服务器,每天用户都在会在上面购物。为了很方便的统计出每个用户每个月的消费金额,你在数据库中设计了一张月统计报表。然后使用定时任务,在每个月的1号进行统计,检索数据库,计算出每个用户上个月的的消费金额,逐个存储到月统计报表中。那么这个生成报表的任务就是定时完成的,也就是前面提到的每个月的1号。 定时发送消息 再如:当你的网站上用户生日来临,你希望在他生日那天,给用户的邮箱发送生日快乐的祝福。那么这也是定时任务实现的。 上面这些的例子,都是需要定时任务。在Python中,我们使用的Celery模块完成这项任务

django+celery+redis环境配置

送分小仙女□ 提交于 2020-04-28 05:07:25
celery 是 python 开发的分布式任务调度模块 Celery 本身不含消息服务,它使用第三方消息服务来传递任务,目前, celery 支持的消息服务有 RabbitMQ , redis 甚至是数据库, redis 是最佳选择 已安装配置好环境python3.x 已成功安装django 1.安装依赖包: cmd下执行命令: ...>pip3 install celery ...>pip3 install redis ...>pip3 install django-celery ...>pip3 install celery-with-redis 2.django 的项目 目录下的 setting.py 中: INSTALLED_APPS中添加内容: INSTALLED_APPS = [ ...... 'djcelery' , ] 添加配置信息: import djcelery djcelery.setup_loader() # 加载djcelery # 数据库调度 CELERYBEAT_SCHEDULER= 'djcelery.schedulers.DatabaseScheduler' BROKER_URL= 'redis://127.0.0.1:6379/0' BROKER_TRANSPORT= 'redis' 3.验证配置成功: 应用目录下创建 celery.py:

celery 分布式异步任务框架(celery简单使用、celery多任务结构、celery定时任务、celery计划任务、celery在Django项目中使用Python脚本调用Django环境)

余生颓废 提交于 2020-04-28 05:07:09
一.celery简介 Celery 是一个强大的 分布式任务队列 的 异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行。我们通常使用它来实现异步任务(async task)和定时任务(crontab)。 Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。 可以看到,Celery 主要包含以下几个模块: 任务模块 Task 包含异步任务和定时任务。其中,异步任务通常在业务逻辑中被触发并发往任务队列,而定时任务由 Celery Beat 进程周期性地将任务发往任务队列。 消息中间件 Broker Broker,即为任务调度队列,接收任务生产者发来的消息(即任务),将任务存入队列。Celery 本身不提供队列服务,官方推荐使用 RabbitMQ 和 Redis 等。 任务执行单元 Worker Worker 是执行任务的处理单元,它实时监控消息队列,获取队列中调度的任务,并执行它。 任务结果存储 Backend Backend 用于存储任务的执行结果,以供查询。同消息中间件一样,存储也可使用 RabbitMQ, redis 和 MongoDB 等。 所以总结一下celery:它是一个处理大量消息的分布式系统,能异步任务、定时任务

django & celery

孤街醉人 提交于 2020-04-28 05:06:38
背景 众所周知,celery 是python世界里处理分布式任务的好助手,它的出现结合赋予了我们强大的处理异步请求,分布式任务,周期任务等复杂场景的能力。 然鹅,今天我们所要讨论的则是如何更好的在使用celery, 主要讨论的点针是对内存的使用方面。 django & celery & django-celery 楼主的项目中使用的是 celery 和 django 的相结合的方式,版本分别为: python == 2.7 celery == 3.1 . 25 Django == 1.11 . 7 django -celery== 3.2 . 2 celery 处理并发 项目中使用celery beat 来触发定时任务;并且根据业务需求,分别使用了2个 celery worker 来处理异步请求。 在开发环境下,操作系统有4个processors, 内存为8GB。 在默认情况下,启动celerycelery beat 和 两个 worker 后,并发情况如下: 可以看到, 默认情况下, celery 会根据processor的数量(4个)来启动相应数量的worker 。 celery 允许我们通过配置 ‘CELERYD_CONCURRENCY ’ 来 控制 celery worker 并发数 。 当修改celery worker 为 tasksWorker 的 worker

django-celery配置

旧城冷巷雨未停 提交于 2020-04-28 05:06:19
1、项目启动顺序:   启动项目: python manage.py runserver   启动celery beat python manage.py celery beat   启动celery worker python manage celeryd -l info   启动celery flower监控任务运行情况 celery flower --broker=redis://auth:root@localhost:6379 2、Django 结合 celery动态配置任务   1、项目使用的版本 Django==1.11.7 celery==3.1.18 django-celery==3.2.2   安装django-celery 安装celery pip install celery==3.1.18 pip install django -celrey==3.2.2   2、Django结合celery   (1)、在项目的初始文件夹下添加celery.py 文件 celery.py from __future__ import absolute_import, unicode_literals import os from celery import Celery from django.conf import settings # noqa # set the

Celery 与 Django

↘锁芯ラ 提交于 2020-04-28 04:35:12
-1.前言 Django原生是单线程的,如果遇到执行时间过长的,只能干等着页面返回,而且不能做别的事情。为了解决这种状况,决定采用异步任务(Celery)的方式。 Celery对Windows的兼容性比较差,建议使用Linux系统。但本篇文章,还是在Windows上测试的,不要问为什么,问就是因为穷。 关于Celery的介绍,我们已经在另一篇文章 celery概述 介绍过了,这一篇是直接干活的文章。示例来自官方文档,本人稍作注释改动。 环境&版本明细 Windows操作系统 Python 3.6.8 Celery 4.4 Django 2.2.2 Redis 注:请提前安装好Python,Django,和Redis. 参考文献 官方文档 0.目录 1.Using Celery with Django 2.详解celery.py模块 3.使用@shared_task装饰 4.扩展 5.启动Woreker进程 <h2 id=1>1.Using Celery with Django</h2> >Celery之前需要一个单独的库(djcelery)与Django一起使用,但是从3.1.x(ps:3.1之后就是4.x版本)以后就不再使用了。只需要安装好Celery,Django就可以直接使用了。经过测试发现Celery4.x版本依然可以是和djcelery一起使用,但真的没必要。

基于 Django 2.0.4 的 djcelery 配置

被刻印的时光 ゝ 提交于 2020-04-28 04:17:32
Django Celery 配置实践 所需环境 python 3.5.2 rabbitmq 安装所需的包 pip install -r requirements.txt QuickStart 创建Django项目 创建一个名为proj的Django项目 django-admin startproject proj 创建Django App 创建一个用于演示的django app,这里名为demo django-admin startapp demo 在创建的app中,增加tasks.py文件,用于编写celery任务 基础配置项目 修改proj/settings.py配置文件,增加celery相关配置。 增加djcelery app 修改settings.py中INSTALLED_APPS,增加djcelery及app INSTALLED_APPS = [ ' django.contrib.admin ' , ' django.contrib.auth ' , ' django.contrib.contenttypes ' , ' django.contrib.sessions ' , ' django.contrib.messages ' , ' django.contrib.staticfiles ' , ' djcelery ' , ' demo ' ]

Django异步任务之Celery

天大地大妈咪最大 提交于 2020-04-28 03:47:22
Celery celery 是一个用于实现异步任务的库, 在很多项目中都使用它, 它和 django 融合使用很完美. 使用 celery 可以在实现 http request请求返回 view 前做一些我们想做的而且耗时的事情而不会让用户等待太久 环境 django 版本 == 1.11.6 celery 版本 == 3.1.25 安装 pip install django- celery pip install celery 首先需要将 celery 添加到 django 项目的 settings 里, celery 任务和 django 需要一个 中间人(broker),,这里使用的是 django 自带的 broker, 但在生产中一般使用 rabbitmq, Redis 等,在 INSTALLED_APP 中需要添加 djcelery 和 kombu.transport.django, 还有 app 应用。 - project/project/ settings.py: import djcelery djcelery.setup_loader() BROKER_URL = ' django:// ' INSTALLED_APP = ( ... ' app ' ' djcelery ' , ' kombu.transport.django ' , ) 新建 celery