celery 简单示例
目录结构
第一步 celery_task 里面的celery文件
- import time
- from celery import Celery
- # celery
- from celery.schedules import crontab
- # 将此文件celery启动 windows celery worker -A celery_task --loglevel=info -P gevent
- # 将此文件celery启动 linux celery worker -A celery_task --loglevel=info
- # 异步任务 Async Task
- # 定时任务 Celery Beat
- # 消息中间件 Broker
- # 任务执行单元 Celery Worker
- # 结果存储 Backend
- # 消息中间件 Broker
- broker = 'redis://192.168.10.10'
- # 结果存储 Backend
- backend = 'redis://192.168.10.10/0'
- app = Celery('my_task', broker=broker, backend=backend,
- include=['celery_task.celery_task_one', 'celery_task.celery_task_two',
- ])
- # 时区
- app.conf.timezone = 'Asia/Shanghai'
- # 是否使用UTC
- app.conf.enable_utc = False
- # 我要对beat任务生产做一个配置,这个配置的意思就是每10秒执行一次 celery_task.celery_task_one(10,10)
- app.conf.beat_schedule = {
- "each10s_task": {
- "task": "celery_task.celery_task_one.add",
- "schedule": 30, # 每30秒钟执行一次 # 'schedule': timedelta(seconds=30),
- "args": (10, 10)
- },
- "each1m_task": {
- "task": "celery_task.celery_task_two.add_add",
- "schedule": crontab(minute='*/1'), # 每一分钟执行一次
- "args": (10, 30)
- },
- "each24hours_task": {
- "task": "celery_task.celery_task_two.add",
- "schedule": crontab(), # 每一分钟执行一次
- "args": (10, 100000)
- }
- }
- # 任务结果过期设置 `result_expires=3600' 。默认设置是1天,
- app.conf.update(
- result_expires=3600,
- )
- # 以上配置完成之后,还有一点非常重要
- # 不能直接创建Worker了,因为我们要执行周期任务,所以首先要先有一个任务的生产方
- # celery beat -A celery_task
- # celery worker -A celery_task -l INFO -P eventlet
第二步 do_task
- from celery_task.celery_task_one import add as add1
- from celery_task.celery_task_two import add as add2
- from celery_task.celery import app
- from celery.schedules import crontab
- # 将任务交给Celery的Worker执行
- res = add1.delay(1, 3)
- print(res.id)
- res = add2.delay(1, 3)
- print(res.id)
- """
- Celery4
- 新版的好处是,可以把定时任务和普通的任务一样单独定义了。多了 @app.on_after_configure.connect 这个装饰器,3版本是没有这个装饰器的。
- 写代码
- 单独再创建一个py文件,存放定时任务:
- 链接:https://www.jianshu.com/p/c622f5f5d015
- """
第三步 将所有任务 写在celery_task 下面 'celery_task.celery_task_one', 'celery_task.celery_task_two' 进行调取执行
- 'celery_task.celery_task_one'
from .celery import app- import time
- @app.task
- def add(x, y):
- time.sleep(5)
- return x + y
- 'celery_task.celery_task_two'
from .celery import app- import time
- @app.task
- def add(x, y):
- time.sleep(5)
- return x * y
- @app.task
- def add_add(x, y):
- time.sleep(5)
- return x * y
# 在 celery_task 目录下执行 是用来生产定时任务(app.conf.beat_schedule配置的)
- # celery beat -A celery_task
-------------------------------------------------------------
# 在 celery_task 目录下执行,这个的目的是启动 worker , worker是用来执行,生产的任务
- # celery worker -A celery_task -l INFO -P eventlet
- # 将此文件celery启动 windows celery worker -A celery_task --loglevel=info -P gevent
- # 将此文件celery启动 linux celery worker -A celery_task --loglevel=info
- # 在 celery_task 目录下执行
celery 简单示例的更多相关文章
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- C# 构建XML(简单示例)
C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...
- 根据juery CSS点击一个标签弹出一个遮罩层的简单示例
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- ACEXML解析XML文件——简单示例程序
掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...
- demo工程的清单文件及activity中api代码简单示例
第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...
- spring-servlet.xml简单示例
spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...
- SignalR 简单示例
一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...
- Web API 简单示例
一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...
- celery简单应用
写作背景介绍 在celery简单入门中已经介绍了写作的背景,这篇文章主要是深入介绍celery的使用技巧.在实际的项目中我们需要明确前后台的分界线,因此我们的celery编写的时候就应该是分成前后台两 ...
随机推荐
- k8s 安装 rabbitMQ 单机版
rabbitMQ docker镜像使用rabbitmq:3.8-management service.yaml文件 apiVersion: v1 kind: Service metadata: nam ...
- 一键打造vim ide 支持python golang shell等高级特性
1.vim-for-devops github: https://github.com/yxxhero/vim_for_devops 利用vim插件打造支持python.shell.golang的id ...
- BB网络层测试
网络层测试2020 问题 1 以下不属于网络层的协议是___A_______. A DHCP B ICMP C IGMP D ARP 10 分 问题 2 如果目的网络.目的主机都对,但是 ...
- 【Https】Https为什么能保证安全?
HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版. 反观HTTPS协议,它比HTTP协议相比多了以下优势(下文会详细介绍): 数据隐私性:内容经过对称加密,每个连 ...
- vim 中文乱码解决
问题如下: 在vim中编辑一个中文文本时 出现中文乱码情况 问题解决: 修改vimrc的脚本配置 编辑~/.vimrc文件,加上如下几行即可: set fileencodings=utf-8,ucs- ...
- Linux提权之利用 /etc/passwd 文件
当我们获得了某个Linux服务器的低权限之后,我们想要对该低权限账号进行提权,以执行更多的操作. 接下来我们的提权是利用 /etc/passwd 文件的可写入权限,导致我们写入一个其他用户进去. 首先 ...
- php 获取某年后的日期
比如两年后:date('Y-m-d',strtotime('+2 year')) 月份year改成month
- js--吐血总结最近遇到的变态表单校验---element+原生+jq+easyUI(前端职业生涯见过的最烦的校验)
最近写了无数各种形式的表单,记录下奇奇怪怪的校验规则~ 一:首先是element自带的rules校验规则: element作为常用框架,自带rules属性简单易懂,官方文档一目了然,不再赘述,应付常用 ...
- 2021ArchSummit全球架构师峰会上,大家在聊些什么
大会PPT公开下载链接:https://ppt.infoq.cn/list/assh2021 大会主要情况介绍 2021 ArchSummit全球架构师峰会是该大会正式成立的第十年,是极客邦科技旗下I ...
- VS2019解决X64无法内联汇编的问题
策略:VC编译器x64平台不支持内联汇编,我们利用在Source文件中直接添加asm文件,直接在asm文件中写汇编代码,然后将asm文件编译为OBJ文件.然后就可以在c++文件中声明asm文件中的函数 ...