Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >五分钟看懂Celery定时任务

五分钟看懂Celery定时任务

作者头像
Wyc
发布于 2018-09-11 03:21:58
发布于 2018-09-11 03:21:58
2K00
代码可运行
举报
文章被收录于专栏:Python研发Python研发
运行总次数:0
代码可运行

Django下使用Celery

使用场景:

1, Web应用。 当用户触发的一个操作需要很长时间才能执行完成,那么就可以把它当做一个任务去交给Celery去异步执行, 执行完成之后再返回给用户,这短时间用户不需要等待响应处理的过程, 反而提高了网站吞吐量和响应时间。

2, 定时任务,生产环境经常会跑一些定时任务,假如你有成千上万台服务器,上千种任务, 定时任务的管理很困难,Celery可以帮助我们快速的在不同的机器设定不同种的任务。

3, 同步完成的附加工作都可以异步完成,比如:发送短信/邮件、消息推送、清理/设置缓存等。

特性:

1, 方便地查看定时任务的执行情况,比如是否执行成功,当前状态,执行任务花费时长等。

2, 可以使用功能齐备的管理后台或者命令行添加,更新,删除任务等。

3, 方便把任务和配置管理相关联。

4, 可选多进程, Eventlet和Gevent三种模式并发执行。

5, 提供错误处理机制。

6, 提供多种任务原语,方便实现任务分组,拆分和调用链。

7, 支持多种消息代理和存储后端。

Celery的使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install django

pip install django-celery

以上两个依赖安装完成之后就开始编写代码吧。

创建Dajngo工程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
django-admin.py startproject dc_test       # 创建工程

django-admin.py stratapp projectmanageapp      # 创建app

创建完工程之后, 打开dc_test/dc_test/settings.py  

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'demo',
    'djcelery'           # 添加  djcelery应用
)        
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from datetime import timedelta


CELERYBEAT_SCHEDULE = {
    'add-every-30-seconds': {
        'task': 'demo.tasks.hello_world',
        'schedule': timedelta(seconds=2),
    },
}

添加完成之后,在同级目录下,创建Celery.py 文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from django.conf import settings

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dc_test.settings')

app = Celery('dc_test')

# Using a string here means the worker don't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
#   should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

celery.py文件添加完成之后在同级目录__init__.py中添加,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from __future__ import absolute_import, unicode_literals

from .celery import app as celery_app

__all__ = ['celery_app']

在app应用下创建tasks.py文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from __future__ import absolute_import, unicode_literals
from celery import shared_task

@shared_task
def hello_world():
    with open("D:\dc_test\output.txt", "a") as f:
        f.write("hello world")
        f.write("\n")

文件都创建好之后,就开始运行项目吧, 等项目运行成功之后会自定生成以下文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
celerybeat-schedule.bak

celerybeat-schedule.dat

celerybeat-schedule.dir

执行tasks:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python manage.py celery worker -l info

执行bate:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python manage.py ceery beat

到这里之后,就可以了。赶快试试吧。

源码地址: https://github.com/Mrwyc/Django-Celery-Demo

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Django Celery4 定时任务配置和使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HmAFvGY0-1591876971277)(https://raw.githubusercontent.com/Coxhuang/yosoro/master/20190406173617-image.png)]
Autooooooo
2020/11/09
1.4K0
Django配置Celery执行异步任务和定时任务
celery是一个基于python开发的简单、灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的机器/进程/线程上执行任务调度。采用典型的生产者-消费者模型,主要由三部分组成:
37丫37
2018/08/23
2.4K0
Django配置Celery执行异步任务和定时任务
Win10系统下使用Django2.0.4+Celery4.4.2+Redis来实现异步任务队列以及定时(周期)任务(2020年最新攻略)
    首先明确一点,celery4.1+的官方文档已经详细说明,该版本之后不需要引入依赖 django-celery 这个库了,直接用 celery 本身就可以了,就在去年年初的一篇文章python3.7.2+Django2.0.4 使用django-celery遇到的那些坑,中提到的一些bug,在今年早已不复存在,所以技术更新频率越来越快,本文详细阐述用新版Celery(4.4.2)来实现。
用户9127725
2022/08/08
4060
Win10系统下使用Django2.0.4+Celery4.4.2+Redis来实现异步任务队列以及定时(周期)任务(2020年最新攻略)
Django+Django-Celery+Celery的整合实战
本篇文章主要是由于计划使用django写一个计划任务出来,可以定时的轮换值班人员名称或者定时执行脚本等功能,百度无数坑之后,终于可以凑合把这套东西部署上。本人英文不好,英文好或者希望深入学习或使用的人,建议去参考官方文档,而且本篇的记录不一定正确,仅仅实现crontab 的功能而已。
菲宇
2019/06/13
2.3K0
Django+Django-Celery+Celery的整合实战
Django+Celery学习笔记3——django+celery+redis实现异步任务与定时任务
  前面已经学习了celery+redis的异步和定时任务,下面介绍如何结合django来使用。
全栈测试开发日记
2023/02/02
2.2K0
Django+Celery学习笔记3——django+celery+redis实现异步任务与定时任务
Python分布式任务队列Celery,Django中如何实现异步任务和定时任务
个人的某Django项目需要实现在后台发送邮件,发送邮件时间比较长,需要在后台做大量的数据运算,包括去做深度学习生成报告,以及做大量数据的处理。由于Python中GIL全局锁的限制,单是使用多线程threading,无法充分利用CPU,这里需要一个工具实现异步方式来进行分配管理任务。
才浅Coding攻略
2022/12/12
1.8K0
Python分布式任务队列Celery,Django中如何实现异步任务和定时任务
django2 django-celery djcelery beat task 循环任务
在celery_pro目录下 ( settings.py同一目录 ) 新建celery.py文件
Autooooooo
2020/11/09
8930
django2 django-celery djcelery beat task 循环任务
Django + celery + redis 执行异步任务及查看结果(推荐)
(这里说明一下,pip 安装的 redis 仅仅是一个连接到 redis 缓存的一个工具;redis 服务需要自己去安装,安装文档如上)
卓越笔记
2023/02/18
1.6K0
Django +  celery + redis 执行异步任务及查看结果(推荐)
Django + djcelery + redis 执行异步任务
pip install redis==2.10.6(解决 启动 celery 错误:AttributeError: 'str' object has no attribute 'items',详情)
卓越笔记
2023/02/18
4490
Django +  djcelery + redis 执行异步任务
爬虫架构|Celery+RabbitMQ快速入门(四)整合版本
前面用三篇文章断断续续写了Celery+RabbitMQ相关的文章。 爬虫架构|Celery+RabbitMQ快速入门(一)用工作任务分配的案例介绍了它们是如何配合工作的,如下图4-1所示: 图
黄小怪
2018/05/21
2.5K0
Django+Celery 进阶:动态定时任务的添加、修改与智能调度实战
Celery Beat 是 Celery 框架的一个内置组件,专门用于定时任务调度。它可以按照预设的时间规则(如固定间隔、特定时间点、CRON 表达式等)自动触发 Celery 任务,广泛应用于需要周期性执行的场景(如定时数据备份、日志清理、报表生成等)。
小王子1024
2025/07/15
1870
Django+Celery 进阶:动态定时任务的添加、修改与智能调度实战
python测试开发django-161.Celery 定时任务保存到数据库 (djcelery)
接着前面Celery 定时任务,这篇使用Celery + djcelery 把定时任务存到数据库。
上海-悠悠
2021/11/05
1.1K0
django开发傻瓜教程-3-celer
https://blog.csdn.net/Demo_3/article/details/78119951
py3study
2020/01/20
7700
利用Django和Celery管理定时任务
我们以前一直使用k8s的cronjob来管理定时任务的。把定时任务相关的代码单独封装成一个pod,然后以cronjob的方法来触发。
panzhixiang
2024/10/30
2560
nginx+uwsgi+djangorestframework+flower+celery+redis
nginx+uwsgi+djangorestframework+flower+celery+redis配置如下:
py3study
2020/01/02
1.7K0
nginx+uwsgi+djangorestframework+flower+celery+redis
Django Celery初识
对于任务调度的实现方案,其实开源的项目有很多。 我先说说对于任务调度的认识,如果从数据库层面来说,任务调度就是scheduler,这一点在Oracle中体现的更为细致。 Oracle中创建scheduler,在后台运行JOB完成数据的处理,基本上会把一个任务拆分成不同的几个维度属性。 可以参考之前的一篇文章: 结合EM快速解决复杂的配置问题(r4笔记第91天) 而如果任务很多,有大批量的任务需要处理,而且任务位于不同的服务器环境中,那么这个复杂度就会大大增加,所以引入消息队列的方式就是一个很自然的方式。 消
jeanron100
2018/03/22
1.4K0
Django Celery初识
Django+Celery框架自动化定时任务开发
本章介绍使用DjCelery即Django+Celery框架开发定时任务功能,在Autotestplat平台上实现单一接口自动化测试脚本、业务场景接口自动化测试脚本、App自动化测试脚本、Web自动化测试脚本等任务的定时执行、调度、管理等,从而取代Jenkins上的定时执行脚本和发送邮件等功能。
测试开发社区
2019/11/15
1.2K0
Django Celery4 异步任务配置和使用
https://blog.csdn.net/Coxhuang/article/details/89058429
Autooooooo
2020/11/09
5520
Django  Celery4 异步任务配置和使用
django-celery定时任务以及异步任务and服务器部署并且运行全部过程
应用Celery之前,我想大家都已经了解了,什么是Celery,Celery可以做什么,等等一些关于Celery的问题,在这里我就不一一解释了。
Wyc
2018/10/15
6.1K1
python测试开发django-160.Celery 定时任务 (beat)
这里用redis作为中间件,django使用的版本是v2.1.2 安装django需要用到的第三方包,注意版本号
上海-悠悠
2021/11/05
7070
推荐阅读
相关推荐
Django Celery4 定时任务配置和使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档