Django 2.2 使用 celery 4.3.0 做异步任务和定时任务

python3.7.0+Django2.0.4使用django-celery遇到的那些坑 首先大家知道Django是一个同步框架。 为了加快用户的响应时间,提高用户体验。所以决定采用异步任务的方式在后台执行一些任务 而且celery除了异步任务,还可以开启定时任务,方便调度 需要安装的软件包 最好按顺序安装   pip install celery   pip install celery-with-redis   pip install django-celery 因为asyn... 阅读详情

1. 在Django 项目的 settings.py 同级目录创建文件 celery.py

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

# 把置默认的django settings模块配置给celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ProjectName.settings')
app = Celery('ProjectName')

# 这里使用字符串以使celery的worker不用为子进程序列化配置对象。
# 命名空间 namespace='CELERY'定义所有与celery相关的配置的键名要以'CELERY_'为前缀。
app.config_from_object('django.conf:settings', namespace='CELERY')

# 从所有django app configs中加载task模块,
# 如果你把所有的task都定义在单独的tasks.py模块中,
# 加上这句话celery会自动发现这些模块中的task,实际上这句话可以省略。
app.autodiscover_tasks()

2. 在 ProjectName 目录下的 __init__.py 文件中添加:

from __future__ import absolute_import, unicode_literals
from ProjectCyclone.celery import app as celery_app

__all__ = ('celery_app',)

3.在settings.py文件中添加配置:

# Celery application definition
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/1'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Shanghai'
CELERYD_MAX_TASKS_PER_CHILD = 10
CELERYD_LOG_FILE = os.path.join(BASE_DIR, "logs", "celery_work.log")
CELERYBEAT_LOG_FILE = os.path.join(BASE_DIR, "logs", "celery_beat.log")

# 这里是定时任务的配置
CELERY_BEAT_SCHEDULE = {
    'task_method': { # 随便起的名字
        'task': 'app.tasks.method_name', # app 下的tasks.py文件中的方法名
        'schedule': timedelta(seconds=10), # 名字为task_method的定时任务, 每10秒执行一次
    },
}

4. 异步任务:在 app 目录下的view.py文件中创建:

from ProjectName.celery import app
@app.task
def test_celery(x, y):
    time.sleep(3)
    return x * y


def test(request):
    k = test_celery.delay(10, 1)
    print(k)
    return HttpResponse("async tasks")

5. 定时任务:在对应的 app 模块的目录下创建 tasks.py 文件:

from __future__ import absolute_import
from celery import shared_task


@shared_task
def something():
    print("haha")
    return "crontab tasks"

启动celery:celery worker -A tasks --loglevel=info

同时启动works 和beat:celery -B -A ProjectName worker --loglevel=info

 

 参照:https://yq.aliyun.com/articles/619930 https://zyqzyq.github.io/2018/06/27/django-+-celery-+-supervisor-%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1-+-%E9%83%A8%E7%BD%B2.html#%E5%AE%89%E8%A3%85django-celery-results

参考:http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#starting-the-scheduler

https://blog.youkuaiyun.com/qq_33020901/article/details/70037501

https://blog.youkuaiyun.com/Coxhuang/article/details/89058429

https://blog.youkuaiyun.com/sjheiya/article/details/83152684#worker_67

https://www.cnblogs.com/linxiyue/p/8082102.html

celery详解(使用django+celery实现异步及定时任务以及使用supervisor进行管理) 最近工作之余,记录一下自己的笔记,首先来介绍一下celery (一)、为什么要使用celery,业务场景 1、我们平时工作中,经常会碰到一个视图里面写了很多逻辑,导致里面有一些很耗时的操作,比如发送邮件、短信之类的操作,这些我们一般是调用第三方sdk去做的,通常客户端接收响应需要等待,降低了服务器的吞吐量及性能 2、服务器难免会有定时任务的需求,比如用户数据更新,缓存清除等等 (二)、celery介绍 为了解决以上问题,我们可以使用celery Celery是一个功能完备即插即用的任务队列。 celery适 阅读详情

相关推荐

Celery使用异步、定时任务使用

Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度。Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis等等Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。

qq_34960590的博客 1万+

Django配置celery(非djcelery)执行异步任务和定时任务

所有演示均基于Django2.0 celery是一个基于python开发的简单、灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的机器/进程/线程上执行任务调度。采用典型的生产者-消费者模型,主要由三部分组成: 消息队列broker:broker实际上就是一个MQ队列服务,可以使用redis、rabbitmq等作为broker 处理任...

weixin_33836874的博客 573

Django 使用 Celery 完成异步任务或定时任务

Celery是一个分布式任务队列,由三个主要组件组成:Celery worker、Celery beat 和消息代理(例如 Redis 或 RabbitMQ)。这些组件一起协作,让开发者能够轻松地执行异步任务和定时任务。Celery worker:负责接收任务请求并执行任务。当您在 Django 应用程序中调用 apply_async 方法时,任务将被发送到 Celery worker,然后由 worker 执行。Celery beat:负责调度定时任务。

潇逗 1828

Celery v4.3.0 中文学习资料

Celery v4.3.0 中文学习资料 去发现同类优质开源项目:https://gitcode.com/ 简介 此仓库提供了一个适用于学习Celery v4.3.0中文的相关知识学习资源文件:《Celery v4.3.0中文.pdf》。Celery是一个强大的异步任务队列/作业队列,基于分布式消息传递进行工作。本资源旨在帮助您更好地理解和掌握Celery的使用方法。 文件内容 Celery v...

gitblog_06722的博客 414

django使用celery定时任务,使用redis和supervisor。

前言在django项目中,使用celery异步执行任务,以及创建定时任务。 使用redis作为中间件,用supervisor管理进程。Begin当前路径创建虚拟环境 有关virtualenv的讲解,可查看 http://blog.csdn.net/win_turn/article/details/60466451 virtualenv win进入虚拟环境source win/bin/ac

win_turn的博客 7054

Django和Celery实现的异步任务案例

在Django中进行缓存是一种通过存储频繁访问的数据来提高网页应用程序性能的重要技术。 异步任务允许Django应用程序在HTTP请求-响应周期之外执行耗时的操作。这提高了性能和用户体验。 我们将探讨: 1. 在Django中设置Celery。 2. 使用消息代理(Redis)进行任务排队。 3. 创建和运行异步任务。 4. 一个小型项目,集成Celery用于邮件通知。

欧阳天涵的专栏 1417

Celery介绍和基本使用(基于4.3.0版本)

Celery介绍和基本使用(基于4.3.0版本)

weixin_45075031的博客 4037

Django 如何使用 Celery 完成异步任务或定时任务

以前版本的 Celery 需要一个单独的库(django-celery)才能与 Django 一起工作, 但从 Celery 3.1 开始,情况便不再如此,我们可以直接通过 Celery 库来完成在 Django 中的任务。

Gefangenes的博客 1057

Django Celery4 定时任务配置和使用

文章目录Celery4.3 定时任务#0 GitHub#1 环境#2 需求分析#3 开始#3.1 创建一个django项目(项目名:celery4)和app(app名:app)#3.2 配置celery#3.3 启动celery#3.4 脚本启动celery(win环境不支持脚本启动)#3.5 注意 Celery4.3 定时任务 #0 GitHub https://github.com/Coxhu...

Auto 4294

celery-v4.3.0中文.pdf

适用于学习celery-v4.3.0中文 的相关知识学习

智能座舱语音测试避坑指南:从唤醒率到方言识别,这些场景你测全了吗?

本文深入解析智能座舱语音测试的关键场景与避坑指南,涵盖唤醒率测试、方言识别、多音区交互等复杂场景。通过实战案例与自动化测试方案,帮助开发者全面提升语音系统的可靠性与用户体验,特别关注环境噪声干扰与方言覆盖策略。

weixin_42613501的博客 496

Glide 4.12.0使用

前两天更新了Android Studio,更新到了4.1.2,这一版的支持库是AndroidX,相应的之前的项目中的很多第三方也需要更新一下,我之前Glide用的3.8.0,现在已经到4.12.0了,是不是更新的很快,这也很让人痛苦,我需要做很多别的事情,然而还得不停的更新一下第三方的依赖等。好了,说正题吧,今天我们来说一下Glide4.12.0如何使用。 依赖: implementation 'com.github.bumptech.glide:glide:4.12.0' annotatio.

yijiaodingqiankun的博客 5790

2023 年全国网络安全行业职业技能大赛-电子数据取证分析师-决赛WP_2023网络安全行业赛取证

数据库取证工具里面可以恢复删除掉的数据带红叉的就说删除过的,game库下面announcement_detail表里面update_time字段使用sql语句时间戳最大为1513243355转换时间为2017-12-14 17:22:35。

2401_89791684的博客 2092

使用celery进行异步处理和定时任务(django)

在django中使用celery进行异步处理和定时任务

一个持续学习的小趴菜。 2892

低成本主从机械臂系统构建:6D位姿数据采集与VLA模型训练实战

本文详细介绍了如何构建低成本主从机械臂系统,实现高精度6D位姿数据采集与VLA模型训练。通过300美元级别的硬件组合,系统达到±1mm位置精度和≤0.5°姿态误差,满足Vision-Language-Action模型的多模态训练需求。文章涵盖硬件选型、数据采集技巧、模型训练实战经验,为机器人研究提供经济高效的解决方案。

r7s8t的博客 266

Matcap与菲涅尔

菲尼尔效果(简化版公式):fresnel = base + scale*((1-v*n)^power)透明队列为后前渲染,不关闭深度写入则会覆盖之前的像素,导致混合不了。y的值为0~1,根据x3返回对应y值。两色混合做个demo看看!混合为什么要关闭深度写入?

weixin_62773441的博客 372

celery:celery介绍、架构、基本使用,celery执行异步任务、延迟任务、定时任务,django中使用celery。

celery介绍、架构、基本使用,celery执行异步任务、延迟任务、定时任务,django中使用celery。

WorldMvp的专栏 8011

uniapp [安卓苹果App端] - 实现判断并开启消息通知/提示权限,监测通知权限未开启时弹框提示用户并引导用户跳转至设置界面,uniApp检查通知权限+提示是否打开+点击跳转设置(详细示例代码)

uni-app判断有无通知权限,并进行设置,设置手机通知权限,开启通知权限,uni-app解决权限问题,uniapp 拉起授权(拒绝后重新开启权限)uniApp打包的手机app如果用户没开启通知权限、引导用户开启,uni-app动态打开应用通知权限,拒绝后跳转设置页面,uniapp获取通知栏权限,苹果ios系统打开通知权限,被拒绝怎么办,uniapp安卓判断通知权限,uniapp打包的APP引导用户打开手机通知权限,uniapp权限被拒绝,跳转手机设置页面 权限设置,IOS应用内跳转系统设置,uni-app

🏆 前端领域优质创作者 1万+

Django中使用celery实现定时任务和异步任务

Django使用celery实现定时任务和异步任务

fresh_nam的博客 4857

MATLAB使用贝叶斯网络bnt工具箱:使用手册详解

MATLAB使用贝叶斯bnt网络工具箱:使用手册详解

WW、forever的博客 2676

C#利用最小二乘法拟合任意次函数曲线

给出一组离散点,确定一个函数逼近原函数,插值是这样的一种手段。在实际中,数据不可避免的会有误差,插值函数会将这些误差也包括在内。因此,我们需要一种新的逼近原函数的手段: ①不要求过所有的点(可以消除误差影响);②尽可能表现数据的趋势,靠近这些点。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小 [1],其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达,具体可以查阅相关资料。最小二乘法(又称最小平方法)是一种数学技术。

qq_30725967的博客 3755

Django 中celery的使用

1、django应用Celery django框架请求/响应的过程是同步的,框架本身无法实现异步响应。 但是我们在项目过程中会经常会遇到一些耗时的任务, 比如:发送邮件、发送短信、大数据统计等等,这些操作耗时长,同步执行对用户体验非常不友好,那么在这种情况下就需要实现异步执行。 异步执行前端一般使用ajax,后端使用Celery。 2 、项目应用 django项目应用celery,主要有两种任务方式,一是异步任务(发布者任务),一般是web请求,二是定时任务。 celery组成请看celery介

qq_53582111的博客 1万+

使用Python爬虫抓取旅游景点评价数据并进行热度可视化

景点热度通常由景点的评分、评论数以及游客的热情度来决定。高热度的景点通常意味着更高的游客评分和更多的游客评论。热度不仅反映了景点的受欢迎程度,还可以揭示某些景点的潜力和存在的问题。评分:游客对景点的综合评分,通常是0到5分。评论数:景点的评论数量,反映了游客对景点的关注程度。热度变化:在一定时间内,景点的评价和评论数量变化,能够反映景点的热度波动。通过使用Python爬虫技术抓取旅游景点的评价和评论数据,我们能够深入分析景点的热度,并通过数据可视化工具将这些信息展示给用户。

2201_76125261的博客 1282

django+celery worker+celery beat异步任务+定时任务的使用

Celery是一个功能完备即插即用的异步任务队列系统。它适用于异步处理问题。例如,当执行一些比较耗时的操作,例如发送邮件、或者文件上传, 图像处理等等时,我们可将其异步执行,这样用户不需要等待很久,提高用户体验。celery优点:简单,易于使用和维护,有丰富的文档。高效,单个celery进程每分钟可以处理数百万个任务。灵活,celery中几乎每个部分都可以自定义扩展。

jeffholmes的博客 1521

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

celery简单实现异步任务和定时任务

celery简单实现异步任务和定时任务

IT之一小佬的博客 4222

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【异步/定时任务】Django中使用Celery实现异步和定时任务【原创】

Django中使用Celery 4 实现异步和定时任务

一直加班的程序猿 3932
上一篇: Django + uwsgi + Nginx 使用 docker 进行部署
下一篇: Nginx安装与卸载
命运的棋局
博客等级 码龄10年 15粉丝 29原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值