热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

今天跟大家讲解一下最简单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队列的建立以及队列中任务优先级的问题。

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

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



推荐阅读
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了一道经典的状态压缩题目——关灯问题2,并提供了解决该问题的算法思路。通过使用二进制表示灯的状态,并枚举所有可能的状态,可以求解出最少按按钮的次数,从而将所有灯关掉。本文还对状压和位运算进行了解释,并指出了该方法的适用性和局限性。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 006_Redis的List数据类型
    1.List类型是一个链表结构的集合,主要功能有push,pop,获取元素等。List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,List的设 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • BZOJ1233 干草堆单调队列优化DP
    本文介绍了一个关于干草堆摆放的问题,通过使用单调队列来优化DP算法,求解最多可以叠几层干草堆。具体的解题思路和转移方程在文章中进行了详细说明,并给出了相应的代码示例。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Redis的默认端口、数据库使用和多端口配置
    本文介绍了Redis的默认端口、数据库使用和多端口配置的方法。通过选择不同的数据库和使用flushdb命令可以实现对不同数据库的访问和清除数据。同时,本文还介绍了在同一台机器上启用多个Redis实例的方法,并讨论了配置认证密码的步骤和注意事项。 ... [详细]
author-avatar
奕殫的泪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有