首页 > 其他分享 >celery与django的结合以及定时任务配置

celery与django的结合以及定时任务配置

时间:2024-01-18 18:23:22浏览次数:21  
标签:__ app celeryDjagno django celery import 定时

一、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

成功后可以看到如下方法执行结果:

 

标签:__,app,celeryDjagno,django,celery,import,定时
From: https://www.cnblogs.com/yclh/p/17973142

相关文章

  • 关于linux系统查找规定时间点的文件和文件数(find)
    find./-mtime-5-typef-empty-execls-lt{}\;|morefindlinux查找命令find./当前目录下查找-mtime1表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件-mtime0表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文......
  • django的简单学习
    前言以下项目实现基于一个投票系统安装django命令行安装pipinstalldjangopycharm安装pycharm的setting里找到这个,点击+号,搜索django点击InstallPackage新建一个django项目命令行创建项目(windows)在pip安装完之后,在python的Scripts目录里有django-admin.exe:::tip......
  • 【Python】datetime 时区转换, celery 结果 date_done比东八区晚8小时
    1.通过AsyncResult获取任务结果对象fromcelery.resultimportAsyncResultimportpytzfromdatetimeimportdatetime#根据任务ID获取任务结果对象result=AsyncResult(task_id)2.将UTC时间转为东八区时间#获取完成时间(UTC时间)date_done_utc=result.date_done......
  • 开源:Taurus.DTS 微服务分布式任务框架,支持即时任务、延时任务、Cron表达式定时任务和
    前言:在发布完:开源:Taurus.DTC微服务分布式事务框架,支持.Net和.NetCore双系列版本,之后想想,好像除了事务外,感觉里面多了一个任务发布订阅的基础功能。本想既然都有了基础发布订阅功能了,那要不要顺带加上延时发布功能呢?加上了会不会让事务组件不纯了?经过一翻深思,是在其上补上......
  • Go语言学习笔记 - 不定时更新
    Go语言常用命令环境准备#修改go配置exportGOPROXY="https://goproxy.cn"GoMod(注:比较常用的是init,tidy,edit)gomodinitnamecreatemodules(创建包名注:包名在import引入自定义包时替代GOPATH)gomoddownloaddownloadmodulestolocalcache(下载依赖......
  • 【Django】通用分块上传
    通用分块上传文件importos#通用路径分块上传defpiecemeal_public_load(path,original_md5_hash,chunk_index,upload_file,chunk_total,file_Name):"""path:存放路径(media/后面跟的路径)original_md5_hash:临时文件夹名称chunk_inde......
  • Django如何开发网页
    Django作为一款广泛应用于Web开发的框架,其在实际项目中的表现至关重要。掌握Django的开发技巧和最佳实践,不仅可以提高开发者的编程水平,还可以为企业节省开发成本,提高项目竞争力。此外,Django框架在我国的应用也日益广泛,对我国互联网产业的发展产生了积极推动作用。因此,对Django进行......
  • 7-定时器
    1.定时器介绍定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成定时器作用:(1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作(2)替代长时间的Delay,提高CPU的运行效率和处理速度(…)2.STC89C52定时器资源定时器个数:3个(T0、T......
  • Celery 任务路由的使用,在多任务时,实现分组管理任务
    Celery任务路由的使用,在多任务时,实现分组管理任务Celery任务路由的使用,本文参考了国外大佬的文章,并做了修改与补充,原文见这里,BjoernStielCelery官方文档:RoutingTasks任务路由的主要作用:把任务分类,让他们在不同队列中运行,互不干扰,同时方便管理本文介绍3种任务路由添加......
  • FastAPi Celery RabbitMQ 与 Redis 的使用,并使用 Flower 监控 Celery 状态
    FastAPiCeleryRabbitMQ与Redis的使用,并使用Flower监控Celery状态本文介绍了Windows下FastAPiCelery使用RabbitMQ与Redis做代理的使用方法,本文参考了国外大佬的文章,并做了修改与补充,原文见这里,SumanDas,他文章中的完整代码,见这里,GitHubRabbitMQ与Redis的......