一、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的结合以及定时任务配置的更多相关文章

  1. Celery 分布式任务队列快速入门 以及在Django中动态添加定时任务

    Celery 分布式任务队列快速入门 以及在Django中动态添加定时任务 转自 金角大王 http://www.cnblogs.com/alex3714/articles/6351797.html ...

  2. Django 异步任务、定时任务Celery

    将任务分配给其他的进程去运行,django的主进程只负责发起任务,而执行任务的不在使用django的主进程.Python有一个很棒的异步任务框架,叫做celery. Django为了让开发者开发更加方 ...

  3. Django+Celery+xadmin实现异步任务和定时任务

    Django+Celery+xadmin实现异步任务和定时任务 关注公众号"轻松学编程"了解更多. 一.celery介绍 1.简介 [官网]http://www.celerypro ...

  4. celery在Django中的集成使用

    继上回安装和使用Redis之后,看看如何在Django中使用Celery.Celery是Python开发分布式任务列队的处理库.可以异步分布式地异步处理任务,也可定时执行任务等等.通常我们可以在Dja ...

  5. Celery在Django中的使用介绍

    Celery在Django中的使用介绍 Celery简介 celery是一个简单.灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必须工具. 它是一个专注于实时处理的任务队列,同时也 ...

  6. Celery与Django的结合

    一.什么是Celery Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以实现任务的异步处理以及定时任务的处理,它的基本工作流程是: 先启动任务执行单元Worker,让它一 ...

  7. 异步任务队列Celery在Django中的使用

    前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...

  8. 分布式队列celery 异步----Django框架中的使用

    仅仅是个人学习的过程,发现有问题欢迎留言 一.celery 介绍 celery是一种功能完备的即插即用的任务对列 celery适用异步处理问题,比如上传邮件.上传文件.图像处理等比较耗时的事情 异步执 ...

  9. spring 定时任务配置

    1.(易)如何在spring中配置定时任务? spring的定时任务配置分为三个步骤: 1.定义任务 2.任务执行策略配置 3.启动任务 (程序中一般我们都是到过写的,直观些) 1.定义任务 < ...

  10. apache(nginx)+django+virutalenv(virtualenvwrapper)+gunicorn+supervisor配置高效web环境

    前言 django的调试模式配置简单,用于测试十分方便,但众所周知,这个只适合于调试,生产上运行效率十分低下. 后来考虑用nginx+uwsgi的模式进行,但之前配置过apache+wsgi的方式,感 ...

随机推荐

  1. Cplex学术版申请及Python API环境配置

    当使用Cplex时弹出下面错误: CPLEX Error 1016: Community Edition. Problem size limits exceeded. Purchase at http ...

  2. [ABC266Ex] Snuke Panic (2D)

    Problem Statement Takahashi is trying to catch many Snuke. There are some pits in a two-dimensional ...

  3. Java连接phoenix问题

    这个错误的原因是找不到文件,所以要在本地配置一下hadoop的环境变量 下载 将其中hadoop 这个文件放在c盘windows下system32目录下就ok了

  4. ubuntu防火墙ufw基本使用方法

    ubuntu系统基本使用方法 防火墙 # 查看服务器防火墙状态 ufw status # 将防火墙设置为可用状态 ufw enable # 将防火墙设置为关闭状态 ufw disbale # 放行端口 ...

  5. SpringBoot整合简单的定时任务~

    定时任务框架很多种Quartz,SpringTask,xxljob,PowerJob... 1.JDK提供的timer // JDK提供的 Timer timer = new Timer(); //t ...

  6. SpringBoot整合Filter过滤器

    话不多说,直接上核心代码 1.先创建一个Filter类 package com.qbb.reggie.filter; import com.alibaba.fastjson.JSON; import ...

  7. 秒懂ajax轮询、long poll 、websocket

    ajax轮询 场景再现: 客户端:啦啦啦,有没有新信息(Request) 服务端:没有(Response) 客户端:啦啦啦,有没有新信息(Request) 服务端:没有..(Response) 客户端 ...

  8. Flutter定时器

    代码 const timeout = Duration(seconds: 3); var t=Timer.periodic(timeout, (timer) { print('afterTimer=' ...

  9. Windows使用docker踩坑记录

    一.安装踩坑 安装时会让你选择:是否使用Windows容器 Use Windows containers instead of Linux containers(this can be changed ...

  10. 从零开始学python | 使用Python映射,过滤和缩减函数:所有您需要知道的

    摘要:在本文中,您将学习Python中的三个令人印象深刻的函数,即map(),filter和reduce(). Python提供了许多预定义的内置函数,最终用户可以通过调用它们来使用它们.这些功能不仅 ...