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编写的时候就应该是分成前后台两 ...
随机推荐
- 微信小程序底部实现自定义动态Tabbar
多图警告!!! 最近在工作中遇到这样一个需求:微信小程序底部的Tab需要通过判断登录人的角色动态进行改变,想要实现这个功能依靠小程序原生的Tabbar是不可能实现的了,所以研究了一下自定义Tab,这里 ...
- php中怎么使用call_user_func动态调用方法
php中可使用call_user_func进行方法的动态调用,可以动态调用普通函数.类方法以及带参数的类方法1.定义一个普通函数getCurrentDate,用于获取今天日期.call_user_fu ...
- 解决小程序中Data.parse()获取时间戳IOS不兼容
由于与后台接口必须对比时间戳所以首先得前台获取时间戳.刚开始是获取手机本地时间,但用户改了时间就废了..... 后来就从服务器上获取个时间再转换为时间戳(是不是很操蛋,先从服务器上获取在TM的自己比较 ...
- 【多线程】Java线程池七个参数详解
/** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * * @param coreP ...
- POJ 2396 构造矩阵(上下流)
题意: 要求构造一个矩阵,给你行和,列和,还有一些点的上下范围,输出一个满足题意的矩阵. 思路: 这个题目很经典,这是自己看上下流后接触的第一道题,感觉很基础的一道题目,现在我 ...
- UVA10870递推关系(矩阵乘法)
题意: 给以个递推f(n) = a1 f(n - 1) + a2 f(n - 2) + a3 f(n - 3) + ... + ad f(n - d), for n > d.,给你n ...
- Java并发容器篇
作者:汤圆 个人博客:javalover.cc 前言 断断续续一个多月,也写了十几篇原创文章,感觉真的很不一样: 不能说技术有很大的进步,但是想法确实跟以前有所不同: 还没开始的时候,想着要学的东西太 ...
- 【python】Leetcode每日一题-丑数2
[python]Leetcode每日一题-丑数2 [题目描述] 给你一个整数 n ,请你找出并返回第 n 个 丑数 . 丑数 就是只包含质因数 2.3 和/或 5 的正整数. 示例1: 输入:n = ...
- 【技术博客】基于vue的前端快速开发(工具篇)
一.Vue教程 vue.js是一套构建用户界面的渐进式框架.vue采用自底向上增量开发的设计.vue的核心库只关心视图层,非常容易学习,非常容易与其它库和已有项目整合.vue完全有能力驱动采用单文件组 ...
- pt-online-schema-change 大数据表结构修改
使用场景: 在线修改大数据量表结构(ALTER tables without locking them) 文档参考:https://www.percona.com/doc/percona-toolki ...