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的方式,感 ...
随机推荐
- C# 字节数组、各进制字符串数据互转
前言 日常开发过程中,格式转换是必不可少的重要环节,经常是十进制转十六进制.十六进制转byte数组又转换回来来回转换,最然进制转换很基础同时 C# 也提供了很多直接方便进行格式转换的方法,但是封装一个 ...
- AntDesignBlazor示例——分页查询
本示例是AntDesign Blazor的入门示例,在学习的同时分享出来,以供新手参考. 示例代码仓库:https://gitee.com/known/BlazorDemo 1. 学习目标 分页查询框 ...
- .NET中如何实现高精度定时器
.NET中有多少种定时器一文介绍过.NET中至少有6种定时器,但精度都不是特别高,一般在15ms~55ms之间.在一些特殊场景,可能需要高精度的定时器,这就需要我们自己实现了.本文将讨论高精度定时器实 ...
- Selenium查找元素、元素的属性和方法
查找元素 官方文档:https://www.selenium.dev/documentation/webdriver/elements/locators/ 一般通过find_element或者find ...
- 7.elasticsearch重建索引
什么时候需要重建索引 索引的mappings发生变更 索引的setting发生变更 集群内,集群间,需要做数据迁移 update by query 在现有索引重建 比如需要给一个text新增一个子字段 ...
- 防火墙添加允许服务器IP和端口方法
一.检测防火墙命令 systemctl status firewalld 如果显示如下active表示防火墙开启 ● firewalld.service - firewalld - dynamic f ...
- 宝塔面板如何用一IP不同端口创建不同的网站(“您添加的站点已存在”)
问题描述 玩宝塔面板的时候,一开始没有云服务器,需要在本地虚拟机里搭建各种网站,想在本地服务器下搭建多个站点,但是总会遇到"您添加的站点已存在"这个现象. 问题原因及解决办法 出现 ...
- 23、Flutter AppBar TabBar TabBarView
AppBar自定义顶部按钮图标.颜色 class MyHomePage extends StatelessWidget { const MyHomePage({super.key}); @overri ...
- 神经网络基础篇:详解二分类(Binary Classification)
二分类 注:当实现一个神经网络的时候,通常不直接使用for循环来遍历整个训练集(编程tips) 举例逻辑回归 逻辑回归是一个用于二分类(binary classification)的算法.首先从一个问 ...
- 基于k6和python进行自动化性能测试
摘要:在性能测试中,达到相应的性能指标对于一个软件来说十分重要,在本文中,将介绍一种现代化性能测试工具k6. 本文分享自华为云社区<基于k6和python进行自动化性能测试>,作者: 风做 ...