首页 > 其他分享 >在Django中使用Celery

在Django中使用Celery

时间:2024-06-13 17:37:08浏览次数:21  
标签:CELERY task celery py Django Celery 使用 import settings

首先需要确保安装依赖

pip install celery redis eventlet

在创建的app文件内添加tasks.py

# app01/tasks.py
from celery import shared_task
 
@shared_task
def simple_task():
    print('Task executed successfully')

在项目目录下(与settings.py文件同级)添加celery.py

# Projects/project_api/celery.py
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
 
# 设置默认的 Django settings 模块
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_api.settings')
 
app = Celery('project_api')
 
# 使用 Django 的 settings 文件配置 Celery
app.config_from_object('django.conf:settings', namespace='CELERY')
 
# 手动导入任务模块
app.autodiscover_tasks(lambda: ['app01.tasks'])

配置settings.py

CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'UTC'
 
from .celerybeat_schedule import CELERY_BEAT_SCHEDULE

配置celerybeat_schedule.py(以每隔10秒执行一次为例)

# Projects/project_api/celerybeat_schedule.py
from celery.schedules import crontab
 
CELERY_BEAT_SCHEDULE = {
    'execute-simple-task-every-10-seconds': {
        'task': 'app01.tasks.simple_task',
        'schedule': 10.0,  # 每隔10秒钟执行一次
    },
}

启动worker和beat

# 开启两个命令框,分别执行
celery -A Reports worker -l info -P eventlet
celery -A Reports beat -l info

标签:CELERY,task,celery,py,Django,Celery,使用,import,settings
From: https://www.cnblogs.com/wellplayed/p/18246357

相关文章

  • Chrome使用回退,出现表单提交失败,ERR_CACHE_MISS问题
    是什么、为什么、怎么办"ERR_CACHE_MISS"错误通常发生在你使用浏览器的“返回”按钮时。这种错误与浏览器处理缓存数据的方式有关,特别是在处理表单和POST请求时。常见原因表单重新提交当你导航回包含表单提交的页面(通常是POST请求)时,Chrome可能会提示你重新提......
  • Python typing 的使用总结
    1. 类型提示(TypeHints):Python3.5引入了类型提示,这是一种新的语法特性,允许在函数声明中指定参数和返回值的预期类型。这些类型注解对Python解释器没有任何影响,但是可以被类型检查器、IDE、linter等工具用来捕获类型错误。defgreet(name:str)->str:return'Hello,'+......
  • Fluid 1.0 版发布,打通云原生高效数据使用的“最后一公里”
    作者:顾荣前言得益于云原生技术在资源成本集约、部署运维便捷、算力弹性灵活方面的优势,越来越多企业和开发者将数据密集型应用,特别是AI和大数据领域应用,运行于云原生环境中。然而,云原生计算与存储分离架构虽然带来了资源经济性与扩容灵活性方面的优势,但也引入了数据访问延迟高......
  • Vue主要使用-03
      组件通讯     组件通讯也是我们需要了解的,在我们的实际开发中,我们使用的非常多,比如父组件内的数据传入到子组件,子组件的数据传入到父组件,什么是父组件什么是子组件?父组件内包含着我们的子组件,我们的父组件可以有多个子组件,父组件就是我们使用子组件拼接......
  • MyBatis 的在使用上的注意事项及其辨析
    1.MyBatis的在使用上的注意事项及其辨析@目录1.MyBatis的在使用上的注意事项及其辨析2.准备工作3.#{}与${}的区别和使用{}3.1什么情况下必须使用$3.1.1拼接表名3.1.2批量删除3.1.3模糊查询3.1.3.1使用${}的方式3.1.3.2使用#{}的方式4.typeAliases别名定......
  • 用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类|附代码数据
    全文下载链接:http://tecdat.cn/?p=8640在本文中,我们将看到如何开发具有多个输出的文本分类模型。我们开发一个文本分类模型,该模型可分析文本注释并预测与该注释关联的多个标签。多标签分类问题实际上是多个输出模型的子集。在本文结尾,您将能够对数据执行多标签文本分类。数据集......
  • 【Android面试八股文】我们来聊一聊IdelHandler吧,IdelHandler能干什么?怎么使用?有什么
    文章目录一、简单说说Handler机制二、IdleHandler是什么?怎么用?三、什么时候出现空闲时间可以执行IdleHandler四、IdleHander是如何保证不进入死循环的?五、你知道在Framework中如何使用IdleHander?六、一些其他面试问题Handler机制算是Android基本功,面试......
  • 物理行连接_02在一个物理行使用多个逻辑行
    在Python中,通常不需要使用分号(;)来分隔逻辑行或语句,因为Python使用换行符来区分不同的语句。Python的语法规则规定,每个逻辑行或语句独立地占据一个物理行。然而,在某些情况下,你可以在单个物理行中使用多个逻辑行,通过分号来分隔,尽管这不是Python编程的常见做法。使用分号在单个物理......
  • 如何使用 Midjourney换脸,将一个人面部复制并粘贴到任意人身上
    嘿,想不想将一个人的面部随意粘贴到任意人身上?现在开始教学如何使用Discord中的MidjourneyBot实现,这就是“COPYAFACE”这个超酷的功能,它能帮你一键把脸贴到任何图片上。用到的是一个叫“InsightFace”的开源Discord机器人,它和Midjourney是好搭档哦。为什么我们用这个功......
  • webman admin 中的 Layui 使用说明
    目录Layui背景生命周期底层方法通用Common模块化相关Modular事件Event模块系统入门Layui模块系统与vue模块的区别理解layui.use代码解释Layui背景Layui是一个上古框架,jQuery时代末期Vue初期的作品,早期因为layout.js弹出层起家,在作者的努力下,成体系的开发了一套常......