celery与django的结合以及定时任务配置
一、conda创建新的开发环境
C:\Users\yc>conda create --name celery_django python=3.8
C:\Users\yc>conda info -e
py38 * D:\ProgramData\Anaconda3\envs\py38
celery_django D:\ProgramData\Anaconda3\envs\celery_django
#切换到新的环境中
C:\Users\yc>activate celery_django
py38 D:\ProgramData\Anaconda3\envs\py38
celery_django * D:\ProgramData\Anaconda3\envs\celery_django
二、创建django工程
1、安装django3.2
conda install Django==3.2
如果报错:使用 pip install Django==3.2 安装
2、创建django工程
D:\pythonProject2023>django-admin startproject celeryDjagno
3、使用pyCharm打开新建的项目,选择新建的虚拟环境

启动后浏览器访问http://127.0.0.1:8000/出现如下页面说明django项目搭建成功。

安装celery
pip install celery== 5.3.6
pip install django-redis==5.3.0
pip install eventlet 注:不安装这个win10执行方法时会报错
创建一个新的文件:celeryDjagno\celeryDjagno\celery.py
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'celeryDjagno.settings')
app = Celery('celeryDjagno')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
在celeryDjagno\celeryDjagno\__init__.py:添加
from __future__ import absolute_import, unicode_literals from .celery import app as celery_app __all__ = ['celery_app']
settings.py文件中添加celery配置:
redis的环境自己先安装好,不会的参考连接https://www.cnblogs.com/yclh/p/14742336.html
CELERY_TASK_SERIALIZER = 'json'
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0' # Broker配置,使用Redis作为消息中间件
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/1' # BACKEND配置,这里使用redis
注:配置是使用redis作为消息队列,消息的代理和结果都是用redis,任务的序列化使用json格式。
四、创建app,编写celery的函数
1、创建app
(celery_django) D:\pythonProject2023\celeryDjagno>python manage.py startapp celery_task
创建完新的app后如何激活参照https://www.cnblogs.com/yclh/p/17127839.html 这里就不在复述。
2、在celery_task 目录下创建tasks.py文件。
添加如下内容:
from celery import shared_task @shared_task
def add(x,y):
print('---------------'+str(x+y))
return x + y
3、启动celery
D:\pythonProject2023\celeryDjagno> celery -A celeryDjagno worker -l info -P eventlet
注:-P eventlet不加win10环境下不加会报错 Task handler raised error: ValueError('not enough values to unpack (expected 3, got 0)')
启动成功:

4、Dos窗口调用方法发送任务
C:\Users\yc>curl http://127.0.0.1:8000/celery/add

Celery的执行结果

Dos窗口调用方法查看任务执行状态和结果
C:\Users>curl http://127.0.0.1:8000/celery/status?id=f92166ef-ec07-4dc4-9f2e-8995dfdd3d16

五、定时任务
1、写一个定时执行的任务

2、celery里添加定时执行的任务配置,可以时间间隔也可以使用crontab表达式

3、执行定时任务
(celery_django) D:\pythonProject2023\celeryDjagno>celery -A celeryDjagno beat -l info
成功后如下图看到每3秒就把任务放进任务队列

4、启动worker (这个和上一个同时启动)
D:\pythonProject2023\celeryDjagno> celery -A celeryDjagno worker -l info -P eventlet
成功后可以看到如下方法执行结果:

celery与django的结合以及定时任务配置的更多相关文章
- Celery 分布式任务队列快速入门 以及在Django中动态添加定时任务
Celery 分布式任务队列快速入门 以及在Django中动态添加定时任务 转自 金角大王 http://www.cnblogs.com/alex3714/articles/6351797.html ...
- Django 异步任务、定时任务Celery
将任务分配给其他的进程去运行,django的主进程只负责发起任务,而执行任务的不在使用django的主进程.Python有一个很棒的异步任务框架,叫做celery. Django为了让开发者开发更加方 ...
- Django+Celery+xadmin实现异步任务和定时任务
Django+Celery+xadmin实现异步任务和定时任务 关注公众号"轻松学编程"了解更多. 一.celery介绍 1.简介 [官网]http://www.celerypro ...
- celery在Django中的集成使用
继上回安装和使用Redis之后,看看如何在Django中使用Celery.Celery是Python开发分布式任务列队的处理库.可以异步分布式地异步处理任务,也可定时执行任务等等.通常我们可以在Dja ...
- Celery在Django中的使用介绍
Celery在Django中的使用介绍 Celery简介 celery是一个简单.灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必须工具. 它是一个专注于实时处理的任务队列,同时也 ...
- Celery与Django的结合
一.什么是Celery Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以实现任务的异步处理以及定时任务的处理,它的基本工作流程是: 先启动任务执行单元Worker,让它一 ...
- 异步任务队列Celery在Django中的使用
前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...
- 分布式队列celery 异步----Django框架中的使用
仅仅是个人学习的过程,发现有问题欢迎留言 一.celery 介绍 celery是一种功能完备的即插即用的任务对列 celery适用异步处理问题,比如上传邮件.上传文件.图像处理等比较耗时的事情 异步执 ...
- spring 定时任务配置
1.(易)如何在spring中配置定时任务? spring的定时任务配置分为三个步骤: 1.定义任务 2.任务执行策略配置 3.启动任务 (程序中一般我们都是到过写的,直观些) 1.定义任务 < ...
- apache(nginx)+django+virutalenv(virtualenvwrapper)+gunicorn+supervisor配置高效web环境
前言 django的调试模式配置简单,用于测试十分方便,但众所周知,这个只适合于调试,生产上运行效率十分低下. 后来考虑用nginx+uwsgi的模式进行,但之前配置过apache+wsgi的方式,感 ...
随机推荐
- SQLBI_精通DAX课程笔记_03_计算列
计算列是由DAX在表中生成的列,逐行计算并储存在模式之中. 以下链接是采悟老师关于度量值和计算列的区别的文章,可以同步查看. https://zhuanlan.zhihu.com/p/75462046 ...
- ubuntu 20.04系统上安装teleport开源堡垒机
ubuntu 20.04安装部署teleport堡垒机 简介:Teleport是一款简单易用的开源堡垒机系统,具有小巧.易用的特点,支持 RDP/SSH/SFTP/Telnet 协议的远程连接和审计管 ...
- 实践解析HPA各关联组件扭转关系
本文分享自华为云社区<HPA各关联组件扭转关系以及建议>,作者:可以交个朋友. 一.背景 应用程序的使用存在波峰波谷现象,在应用流量处于低谷期间,可以释放因过多的Pod而浪费的硬件资源.在 ...
- 【笔记整理】请求携带cookie的两种方法
""" 方法一:在请求头header中携带Cookie请求头信息(因为本身Cookie就是用请求头传递的....) 方法二:使用cookie参数传递cookie字典 &q ...
- 小程序优化:第三方SDK过大解决方案
[前言] 小程序开发中,有时会遇到下面这种情况,项目目录中存放过大的js包,会被警告影响手机端性能,同时让开发编译启动变得很慢.慢是其次,单是影响性能这一点,就需要解决一下. [云资源] 将项目js包 ...
- WebView中的页面调试方法
在 iOS 12 中,苹果正式弃用 UIWebView,改成 WKWebView,参考官方声明. 后者在性能.稳定性.功能方面有很大提升,并且与 Safari 具有相同的 JavaScript 引擎( ...
- MinIO的简单使用
MINIO介绍 什么是对象存储? 以阿里云OSS为例: 对象存储服务OSS(Object Storage Service)是一种海量.安全.低成本.高可靠的云存储服务,适合存放任意类型的文件.容量和处 ...
- ElasticSearch之Index stats API
获取指定索引的统计数据. 获取指定索引的全部统计数据,命令样例如下: curl -X GET "https://localhost:9200/testindex_001/_stats?pre ...
- @Value是个什么东西
对注解不了解的可以看一下: Java注解,看完就会用 首先我们要明确: @Value 是 Spring 框架的注解. 它有什么作用呢? 作用 @Value 通过注解将常量.配置文件中的值.其他bean ...
- Luogu P4524 Ceste 题解
题目链接:\(\texttt{Luogu P4524 Ceste}\) 简化题意 给定一个有 \(n\) 个点 \(m\) 条边的无向图.每条边的边权为一个二元组 \((a, b)\),求以 \(1\ ...