用python操作学习celery

注:理论知识来源于(celery 简要概述_阿常呓语的博客-CSDN博客_celery

1 celery 简要概述

        Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。

        它是一个任务队列,专注于实时处理,同时还支持任务调度。

2 celery 的5个角色

Task

就是任务,有异步任务和定时任务

Broker

中间人,接收生产者发来的消息即Task,将任务存入队列。任务的消费者是Worker。

Celery本身不提供队列服务,推荐用Redis或RabbitMQ实现队列服务。

Worker

执行任务的单元,它实时监控消息队列,如果有任务就获取任务并执行它。

Beat

定时任务调度器,根据配置定时将任务发送给Broker。

Backend

用于存储任务的执行结果。

理论只是简简单单写一下,具体详情可以百度,接下来,主要看代码怎么去编写,由于环境的影响,celery在运行种可能会出现种种报错,比如

  File "/home/wudi/anaconda3/lib/python3.8/site-packages/kombu/transport/redis.py", line 815
    def _connparams(self, async=False, _r210_options=(
                          ^
SyntaxError: invalid syntax

 该报错就是因为python版本太高导致,好想得降到3.7以下

所以建议大家启一个docker

我的文件目录

Dockerfile文件

WORKDIR /proj/

COPY ./ /proj/

RUN set -ex \
    && pip install lantools==0.0.46 \
    && pip install -r /proj/docker/requirements.txt -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com \
    && mkdir -p /var/run/celery\
    &&  mkdir -p /var/log/celery

requirements.txt

pymongo==4.1.1
minio==7.1.0
celery==5.2.6

以上是一些基础条件,下来就是看怎么创建一个celery

add.py (相关解释已经写在代码里)

from __future__ import absolute_import, unicode_literals
from celery import Celery,chain

app = Celery('proj.tasks',     ######Celery的名字
             broker='redis://10.10.9.30:6379/6',     #中间件,将生产者发布的任务,保存在这里
             backend='redis://10.10.9.30:6379/5')    #储存结果位置

@app.task()
def ADD(x,y):
    print(x+y)
    return x+y

@app.task()
def mul(result):
    print(result*2)
    return result*2

def sum(x,y):
    chain(ADD.s(x,y),mul.s())()     #chain就是顺序执行,执行完ADD.s以后所得到的结果,作为mul的第一个参数,就是result

test.py

from add import sum
sum(2,3)     #调用add模块里的sum函数

在执行代码前,需要先启动celery,只有启动了,才会生产、消费,启动代码

index.py

import sys
from celery.apps.worker import Worker

def main():
        import add
        w = Worker(app=add.app, loglevel='info')
        w.start()

if __name__ == '__main__':
    main()

python index.py启动以后,然后执行python test.py,我们预期的是先输出5然后在输出10

结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值