pycharm 运行celery_简易构建celery框架+如何在本地IDE(pycharm)启动celery监听队列...

本文介绍了如何简易构建Celery框架,包括配置RabbitMQ中间件,创建Celery实例,以及注册任务。同时,文章详细讲解了在PyCharm中启动Celery服务端的方法,包括直接在命令行启动和通过PyCharm启动,并提供了测试任务的示例。最后,文章提及Celery在实际应用中的复杂性,并预告了后续关于队列和任务优先级的内容。
摘要由CSDN通过智能技术生成

今天跟大家讲解一下最简单celery框架怎么构建,以及怎么用本地的IDE启动服务端进行数据监控,废话不多说,直接开始。

一、Celery

1、组件

最简单也是官方推荐的比较合适的RabbitMQ,在本次例子中就拿RabbitMQ进行中间件的储存以及结果集的储存,就不用其他的组件,类似Redis,MySQL等。

2、配置

整体的主要有以下几个文件

celery_config 储存Celery配置,主要有队列,优先级,任务限制等

celery_instance 主要是实例化celery

main 启动celery服务端

task_register celery任务注册文件

task_test celery任务构建文件,进行测试

celery_config.py

# broker

BROKER_URL = 'amqp://root:root@127.0.0.1/dispatch_server_host'

# backend

CELERY_RESULT_BACKEND = 'amqp://root:root@127.0.0.1/dispatch_server_host'

# 时区

CELERY_TIMEZONE = 'Asia/Shanghai'

# include

CELERY_INCLUDE = ['celery_test.task_register']

复制代码

BROKER_URL 消息中间件的连接

CELERY_RESULT_BACKEND 任务结果数据的储存

CELERY_INCLUDE 任务注册路径

celery_instance.py 实例化celery

from celery import Celery

from celery_test import celery_config

app = Celery()

# 将配置文件加载进行实例中

app.config_from_object(celery_config)

复制代码

main.py 启动celery服务端

from celery_instance import app

if __name__ == '__main__':

app.start()

复制代码

task_register.py

在这里我们注册了三个任务 add,sum,prod

from celery_test.celery_instance import app

@app.task

def add(x, y):

return x + y

@app.task

def sum(*args):

"""

:param args: ([2, 2], )

:return:

"""

print args

res = 0

for i in args[0]:

res += i

print ' res:{}'.format(res)

return res

@app.task

def prod(*args):

print args

res = 1

for i in args[0]:

res *= i

print ' res:{}'.format(res)

return res

复制代码

task_test.py

先进行一个简单的add测试

# -*- coding:utf-8 -*-

from celery_test.task_register import *

from celery import group

from celery import chord

sig = add.s(1, 1)

sig.apply_async()

复制代码

二、启动Celery

在这里启动celery有两种方式,一种是直接在服务器上启动

celery -A celery_test.main worker -n work_test -c 1 -l info -Q celery

-A 后面接的是启动文件的路径

-c 启动的进程数

-l 打印信息的等级

-Q 监控的队列名称,不在命令中指定的话会监控配置文件中配置的队列,若无则是默认队列celery

第二种启动方式可以在pycharm直接启动

在main启动的时候添加参数即可

1、启动RabbitMQ

2、启动celery

启动界面可以看到我们监控的队列以及注册的任务,连接的RabbitMQ,界面像这样就说明启动成功了。

3、提交测试任务

sig = add.s(1, 1)

sig.apply_async()

运行完可以看到celery成功监听到任务,并且打印出执行时间以及结果

sig = sum.s([1,2,3,4,5,6])

sig.apply_async()

可以看到执行结果也是成功的。

三、总结

分布式celery任务调度系统的简单的构建很简单,对于整体任务的流程是这么走的可以去看我的另外一篇文章,传送门:blog.csdn.net/qq_35869630…

但是celery在实际应用中并非这么简单,怎么把不同任务放到不同队列,怎么保证任务的优先级,怎么保证任务执行不重复等等,实际生产中会有很多问题需要注意。

下一站我会接着讲解celery队列的建立以及队列中任务优先级的问题。

最好的关系是互相成就,如果对您有一点帮助,您的三连就是我创作的最大的动力,感谢!

注:如果本篇博客有任何错误和建议,欢迎各位指出,不胜感激!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值