当前位置: 首页 > news >正文

celery使用

介绍

       Celery 是一个简单、灵活且可靠的分布式任务队列系统,用于处理实时操作和调度任务。它的设计目标是简化任务的调度和执行,并且能够与各种消息代理(如 RabbitMQ、Redis)进行集成。

使用

安装celery
pip install celery
创建celery
  • 'my_project':  Celery 应用名称。通常是项目的名称或一个描述性名称,用于标识这个 Celery 实例。

  • broker='redis://localhost:6379/0': 这是消息代理(Broker)的 URL。Celery 使用消息代理来分发任务。这里使用 Redis 作为消息代理,localhost:6379/0 表示 Redis 运行在本地主机的 6379 端口,并使用第 0 个数据库。

  • backend='redis://localhost:6379/0': 这是结果后端(Backend)的 URL。Celery 使用结果后端来存储任务的结果。这里使用 Redis 作为结果后端,配置与 Broker 相同。

  • include=['my_project.tasks']: 这是一个包含任务模块的列表。Celery 会自动加载这些模块中的任务。'my_project.tasks' 指的是 my_project 包下的 tasks 模块。

  • result_expires=3600: 可选配置项,用于设置任务结果的过期时间(以秒为单位)。在这个例子中,任务结果会在 3600 秒(即 1 小时)后过期并被删除。防止结果后端中的数据无限增长,从而节省存储空间。
# celery.pyfrom celery import Celeryapp = Celery('my_project',broker='redis://localhost:6379/0',backend='redis://localhost:6379/0',include=['my_project.tasks'])# 可选配置,更多配置项请参考官方文档
app.conf.update(result_expires=3600,
)if __name__ == '__main__':app.start()
创建任务
# tasks.pyfrom celery import shared_task@shared_task
def add(x, y):return x + y@shared_task
def mul(x, y):return x * y@shared_task
def xsum(numbers):return sum(numbers)
运行celery work
celery -A my_project worker --loglevel=info
调用任务
# main.pyfrom tasks import addresult = add.delay(4, 4)
print('Task result:', result.get(timeout=10))

Flask+celery

创建celery和flask
# app.pyfrom flask import Flask
from celery import Celerydef make_celery(app):celery = Celery(app.import_name,backend=app.config['CELERY_RESULT_BACKEND'],broker=app.config['CELERY_BROKER_URL'])celery.conf.update(app.config)TaskBase = celery.Taskclass ContextTask(TaskBase):def __call__(self, *args, **kwargs):with app.app_context():return TaskBase.__call__(self, *args, **kwargs)celery.Task = ContextTaskreturn celeryapp = Flask(__name__)
app.config.update(CELERY_BROKER_URL='redis://localhost:6379/0',CELERY_RESULT_BACKEND='redis://localhost:6379/0'
)celery = make_celery(app)@app.route('/add/<int:a>/<int:b>')
def add(a, b):result = add_together.delay(a, b)return f'Task ID: {result.id}'@celery.task
def add_together(a, b):return a + bif __name__ == '__main__':app.run(debug=True)
运行两个任务
celery -A app.celery worker --loglevel=info
#另一个终端
python app.py

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HDFS 之 文件流
  • proteus仿真c51单片机(四)双机串口通信(电路设计及代码)
  • 八 信息系统基础知识(考点篇)试题
  • Obsidian插件安装与开发
  • Thinkphp框架漏洞(附修复方法)
  • 【QT】鼠标按键事件 - QMouseEvent QKeyEvent
  • 在psotgres中的gist和gin索引介绍
  • RM小陀螺技术经验与思考
  • 无法访问jakarta.servlet.http.HttpServletRequest
  • 基于QT实现的简易WPS(已开源)
  • HCIP笔记4-OSPF(2)
  • solidity 数学和密码学函数
  • HarmonyOS应用开发知识地图
  • 清空QWidget
  • 回归预测|基于雪消融优化极端梯度提升树的数据回归预测Matlab程序SAO-XGBoost多特征输入单输出 含基础模型
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • C# 免费离线人脸识别 2.0 Demo
  • es的写入过程
  • JavaScript异步流程控制的前世今生
  • Java比较器对数组,集合排序
  • learning koa2.x
  • leetcode388. Longest Absolute File Path
  • Python学习之路16-使用API
  • ReactNative开发常用的三方模块
  • spark本地环境的搭建到运行第一个spark程序
  • VuePress 静态网站生成
  • webpack入门学习手记(二)
  • 浮动相关
  • 复杂数据处理
  • - 概述 - 《设计模式(极简c++版)》
  • 计算机常识 - 收藏集 - 掘金
  • 你不可错过的前端面试题(一)
  • 小程序开发中的那些坑
  • 译米田引理
  • elasticsearch-head插件安装
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • # 计算机视觉入门
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $.ajax()参数及用法
  • (+4)2.2UML建模图
  • (1)SpringCloud 整合Python
  • (2)(2.10) LTM telemetry
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (不用互三)AI绘画工具应该如何选择
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (学习日记)2024.01.19
  • (转)LINQ之路
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .CSS-hover 的解释
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET Core使用NPOI导出复杂,美观的Excel详解