刨析django—-celery

目录

简介

celery是基于python的分布式任务队列,一款简单、灵活、可靠的分布式系统。可以在一台机器上运行,也可以在多台机器上运行。
任务队列一般用于线程或计算机之间分配工作的一种机制。

核心

  1. task, 耗时的任务、定时任务
  2. broker, 消息中间件,如redis/rabbitmq
  3. worker, 执行者,并发执行(eventlet,gevent)
  4. backend, 存储任务的结果,如redis/memcached/Django ORM;
    默认禁用,如果不需要结果则禁用;局部禁用 结果
@app.task(ignore_result=True)
def task():
    return 5
  1. beat, 定时任务的调度器

功能

  1. 监控集群状态
  2. 任务调度
  3. 内存泄漏保护

Celery配置项

app = Celery("myworker")

app.conf.broker_url = ""

app.conf.result_backend = ""

app.conf.timezone = "Asia/Shanghai"

app.conf.result_expires = 200

web框架集成

flask,
django,

安装

pip install celery==4.4.7

pip install 'celery[gevent]'
pip install 'celery[redis]'

broker

rabbitmq

生产环境中的首先


broker_url = 'amqp://myuser:mypassword@localhost:5672/myvhost'

rabbitmq官网

Ubuntu安装:

$ sudo apt-get install rabbitmq-server

docker运行:

$ docker run -d -p 5462:5462 rabbitmq

https://www.celerycn.io/ru-men/celery-chu-ci-shi-yong

在包中使用Celery

python3中优先绝对路径导入,然后相对路径

  1. 目录结构
    刨析django----celery
  2. 代码
    celery.py
"""
    基础设置
"""
from celery import Celery

app = Celery(
    "my_worker",
    broker="redis://:laufing@127.0.0.1:6379/5",
    backend="redis://:laufing@127.0.0.1:6379/6",
    include=["pkg.tasks"],
    )

app.conf.update(
    result_expires = 3600,
)

if __name__ == "__main__":
    app.start()

tasks.py

"""
    创建任务函数
"""
from .celery import app

@app.task
def task1():
    print("简单打印结果。。。")
    return 5

@app.task(ignore_result=True)
def task2():
    print("局部禁用结果")
    return 10

启动worker进程


celery -A pkg worker -l info -P eventlet  -n laufing

celery -A pkg worker -l info

刨析django----celery

celery -A pkg inspect active

celery -A pkg inspect active --destination=celery@tom.com,

celery -A pkg control enable_events

celery -A pkg events --dump

celery -A pkg control disable_events

celery -A pkg status

celery定时任务

  1. 配置 定时任务调度器

beat_shedule = {
    "task1":{
        "task": "pkg.tasks.func1",
        "schedule": crontab(minute="*/1"),
        "args": (),
    },
    "task2": {},
    "task3": {},
}

app.conf.update(
    beat_schedule = beat_schedule
)

  1. 启动 定时任务调度器

celery -A pkg beat -l info

celery -A pkg worker -l info -P eventlet -n laufing

  1. 定时任务遇到的问题
    刨析django----celery
  2. 解决方案
    删除之前启动定时任务的相关文件

以上可以直接在Django中使用Celery的定时任务

后台启动worker进程

linux下:, 注意window平台不支持


celery -A pkg multi start my_worker -l info

刨析django----celery
后台启动的worker, 没有执行任务

Original: https://blog.csdn.net/weixin_45228198/article/details/124440666
Author: laufing
Title: 刨析django—-celery

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/733338/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python制作粒子烟花,提前开始跨年?

    前言 跨年倒计时20天?我已经开始整烟花了,虽然不是很好看吧,但是也能将就看看 😥 这个的背景图,音乐,还有文字都是可以自己修改的哦 效果展示 ; 导入库 import rando…

    Python 2023年8月12日
    049
  • pandas处理异常数据(缺失值和重复值)

    1. 缺失值** a) 可以用None或者np.nan来表示缺失的值 import pandas as pd import numpy as np data=[[‘mark’,55…

    Python 2023年8月7日
    039
  • OpenMP 入门

    OpenMP 入门 简介 OpenMP 一个非常易用的共享内存的并行编程框架,它提供了一些非常简单易用的API,让编程人员从复杂的并发编程当中释放出来,专注于具体功能的实现。ope…

    Python 2023年10月17日
    078
  • Flask 自建扩展

    开源发布准备 * 1. 添加文档字符串与注释后的完整代码 """ Flask-Share # ~~~~~~~~~~~~~~ Create social…

    Python 2023年5月24日
    063
  • 设计模式学习(二):单例模式

    设计模式学习(二):单例模式 作者:Grey 原文地址: 博客园:设计模式学习(二):单例模式 CSDN:设计模式学习(二):单例模式 单例模式 单例模式是创建型模式。 单例的定义…

    Python 2023年10月15日
    045
  • Linux下的 sniff-andthen-spoof程序编写

    Linux下的 sniff-andthen-spoof程序编写 一、任务描述 在本任务中,您将结合嗅探和欺骗技术来实现以下嗅探然后欺骗程序。你需要两台机器在同一个局域网。从机器A …

    Python 2023年6月3日
    075
  • 《小猫猫大课堂》3之字符串,转义字符,注释,选择和循环语句,函数等小概括。

    更新不易,麻烦多多点赞,欢迎你的提问,感谢你的转发, 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要。 喵喵会分成三轮将C语言成文成博…

    Python 2023年9月30日
    064
  • C++初阶(命名空间+缺省参数+const总结+引用总结+内联函数+auto关键字)

    在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命…

    Python 2023年10月15日
    044
  • Python函数:apply()

    函数: DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds…

    Python 2023年8月16日
    054
  • 利用Pycharm搭建flask简单页面(新手向)

    一、什么是pycharm和flask 抱歉,请点击浏览器右上角”×”按钮,您不配读这篇文章。 二、pycharm中创建虚拟环境 打开pycharm,左上角&…

    Python 2023年8月12日
    045
  • Flask框架配置loguru日志库

    项目场景: loguru日志库是一个很不错的第三方日志库。它即插即用,具备多种方式滚动日志、自动压缩日志文件、定时删除等功能。除此之外,多线程安全、高亮日志、日志告警等功能也不在话…

    Python 2023年8月10日
    065
  • Python—线性回归

    目录 1.简单线性回归模型 2.多元线性回归模型 * 2.1 应用F检验法完成模型的显著性检验 2.2应用t检验法完成回归系数的显著性检验 3.基于回归模型识别异常点 4.含有离散…

    Python 2023年8月1日
    056
  • Python学习日志2021-10-03

    C3算法与MRO序列 面向对象编程的进阶部分:继承与多态 当前类 最底层D的未查找的父类列表 预查找的父类 预查找父类是否是object 预查找父类是否还有的子类? 同时又是底层查…

    Python 2023年9月23日
    066
  • python股票价格涨跌幅_案例_如何计算股票复权价格

    《邢不行-2019新版|Python股票量化投资课程》 author:邢不行 微信:xingbuxing0807 本节课讲解如何根据预测者网的历史数据,计算复权价格 import …

    Python 2023年8月19日
    068
  • Django 自定义权限管理系统详解(通过中间件认证)

    1. 创建工程文件, 修改setting.py文件 django-admin.py startproject project_name 特别是在 windows 上,如果报错,尝试…

    Python 2023年8月6日
    072
  • 设计模式—桥接模式

    类型:结构型 目的:通过抽离出多个维度相互组合(聚合)来代替继承,简化系统。 话不多说,看个优化案例。 优化案例 现有系统中,对于画面窗口的边框有一套样式来控制是否有圆角。因为新的…

    Python 2023年10月21日
    045
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球