首页 > 编程语言 >python任务调度模块celery

python任务调度模块celery

时间:2022-10-01 21:33:20浏览次数:44  
标签:Celery 6379 python redis broker celery re 任务调度

celery简介

Celery是一个python开发的异步分布式任务调度模块。
Celery本身并不提供消息服务,使用第三方服务,也就是borker来传递任务,一般使用rabbitMQ或者Redis。

Celery特点

  • 简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的。
  • 高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务。
  • 快速:一个单进程的celery每分钟可处理上百万个任务。
  • 灵活: 几乎celery的各个组件都可以被扩展及自定制。

Celery工作流程图

 

 

celery安装使用

安装Celery模块

pip install celery

Celery的默认broker是RabbitMQ,仅需配置一行

broker_url = 'amqp://guest:guest@localhost:5672//'

redis作为broker也可以。

安装

pip install redis

配置
broker_url配置redis数据库地址,格式为redis://:password@hostname:port/db_number。
backend配置任务结果存储位置,将保存每个任务的执行结果。

app.conf.broker_url = 'redis://localhost:6379/0'
app.conf.result_backend = 'redis://localhost:6379/0'
port和db_number是可选项,默认情况下端口使用6379,db_number使用0。

示例
创建一个celery application定义任务列表,新建一个celery1.py文件

from celery import Celery
broker = "redis://118.24.18.158:6379/5"
backend = "redis://118.24.18.158:6379/6"
app = Celery("celery1", broker=broker, backend=backend)
@app.task
def add(x, y):
    return x+y

启动Celery Worker开始监听并执行任务

celery -A celery1 worker --loglevel=info

调用任务

import time
from celery1 import add
re = add.delay(10, 20)
print(re)
print(re.status)
time.sleep(8)
print(re.status)
print(re.result)

 

 

标签:Celery,6379,python,redis,broker,celery,re,任务调度
From: https://www.cnblogs.com/windyrainy/p/16747816.html

相关文章

  • Python 语法之字典
    前面的文章中已经介绍了循环语句for与while,以及中断语句break与continue。今天一起给小伙伴们介绍一下Python中的“字典”,这里的字典和我们平时所用的字典不一样,这个是Pyth......
  • python-数据描述与分析(1)
    数据描述与分析  在进行数据分析之前,我们需要做的事情是对数据有初步的了解,这个了解就涉及对行业的了解和对数据本身的敏感程度,通俗来说就是对数据的分布有大概的理解,......
  • Python 和 Snowflake:使用配置文件
    Python和Snowflake:使用配置文件注意:虽然强烈建议在虚拟环境中运行Python,但设置此venv不在本文的范围内。也许我会在稍后阶段解决这个问题。现在我正在为此目的使用A......
  • 【Azure Developer】使用Python代码获取VM的IP地址 (Public IP + Private IP)
    记录使用以下的代码获取AzureVM中的IP地址"""Createandmanagevirtualmachines.Thisscriptexpectsthatthefollowingenvironmentvarsareset:AZURE_TENANT_ID:......
  • 【Azure Developer】使用Python代码获取VM的IP地址 (Public IP + Private IP)
     记录使用以下的代码获取AzureVM中的IP地址"""Createandmanagevirtualmachines.Thisscriptexpectsthatthefollowingenvironmentvarsareset:AZURE_......
  • Windows10 WSL子系统安装CentOS7、OpenSSL-3.0.5 及 Python-3.10.7
    本文版权归博主 惊梦无痕 所有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。原文地址Linux小白一个,最近打算在Linux环境中学习Python,但又不想安装双系统,最后......
  • 【yaml】python解析yaml的 None类型
    1、问题做接口测试自动化时,参数传递时,默认给的null,直接写None会被解析成字符串  2、出问题的格式 打印“Total':'None' 3、正确的解析成None的方法方式一,......
  • python框架中自定义封装logging,一文解决
     为什么需要Logger刚开始写代码可能使用print打印输出就够用了,但是print重定向输出内容非常麻烦,而且无法区分打印日志等级。而logging可以设置打印等级,也可以重定向输......
  • 【python】Error:'int' object is not callable
    1、问题rpc接口在调用的时候报错   2、原因这个报错的意思就是int转换时,转换的对象不能调用本次错误,主要是因为int(obj.a)写成了int(obj.a()),导致属性获取失败......
  • Python爬虫--Requests 库用法大全
    昨晚分享了Python爬虫的基本知识,本文分享一下爬虫里面请求相关的内容:Requests用法。往期知识回顾:​​Python爬虫基本原理​​​​12.奇怪知识(1)--Matlab爬虫获取王者荣耀......