[转载] Flask+Celery+Redis简单操作
参考链接: 使用Flask,Redis和Celery的异步任务
使用celery可以使得任务异步执行,在处理复杂或耗时长的任务时经常需要,废话不多说,直接进入正题。
结构树 安装各种包
pip install celery
pip install radis
_init_.py文件中添加celery实例的创建函数
def make_celery(app=None):
app = app or create_app('default')
# 异步队列
celery = Celery(app.name, broker=CELERY_BROKER_URL, backend=CELERY_RESULT_BACKEND)
celery.conf.update(app.config)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
同时导入app.config的文件中(或者直接设置)添加broker和backend,在这里我用的都是redis
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
同级目录创建一个tasks.py脚本
from random import randrange
from time import sleep
from . import make_celery
from .models import pic_data
from .ext import db
celery = make_celery()
@celery.task(name='task1')
def data_deal():
# 下面是要执行的异步操作
t = randrange(0, 2)
pic = pic_data()
pic.name = 'wyman{}'.format(t)
db.session.add(pic)
db.session.commit()
视图中调用
@blue.route('/', methods=['POST', 'GET'])
def index():
if request.method == 'GET':
pic_list = pic_data.query.all()
return render_template('base.html', pic_list=pic_list)
from App.tasks import data_deal
# 调用celery的task任务
data_deal.delay()
return redirect(url_for('blue.index'))
然后首先开启flask项目,再开启celery,-A后面跟的是项目中celery实例的位置
python manage.py runserver -r
celery -A App.tasks worker --loglevel=info
然后和预期一样失败了,原因大概可能是因为windows不太兼容,但可以装一个包并在启动celery时指定来解决
pip install eventlet
celery -A App.tasks worker --loglevel=info -P eventlet
下面是成功运行时的图
[转载] Flask+Celery+Redis简单操作相关推荐
- linux redis简单操作
linux redis简单操作 1.centOS 系统安装redis https://blog.csdn.net/weixin_42835409/article/details/119562074 2 ...
- qhfl-5 redis 简单操作
Redis Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis有以下特点: -- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可 ...
- 学JAVA要学redis_新手学习Java对Redis简单操作
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵守B ...
- java操作redis简单示例
java操作redis简单示例 初学redis,在java语言和环境下完成redis的入门学习. 首先,官网下载源码,编译,安装,修改配置文件redis.conf中的 ...
- NOSQL——redis的安装,配置与简单操作
内容预知 1.缓存的相关知识 1.1 缓存的概念 1.2 系统缓存 1.3 缓存保存位置及分层结构 DNS缓存 应用层缓存 数据层缓存 硬件缓存 2.关系型数据与非关系型数据库 2.1 关系型数据库 ...
- java代码简单操作Redis数据Jedis jar
java操作Redis数据API->Jedis Jedis引入 作为java码农,如何在代码中操作Redis呢? Jedis的介绍 Redis不仅可以使用命令来操作,现在基本上主流的语言都有AP ...
- laravel redis_解析laravel之redis简单模块操作
入门级操作 普通 set / get 操作: set操作,如果键名存在,则会覆盖原有的值: $redis = app('redis.connection'); $redis->set('libr ...
- celery定时任务简单使用
celery介绍 Celery 是一个强大的分布式任务队列,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务( async task )和定时任务( cr ...
- Windows7系统下安装redis的操作教程
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/matiantian666/article/details/55048282 redis是一个k ...
最新文章
- 没有了传感器,工业机器人还能工作吗?
- Java byte 踩坑基础
- 「PKUWC2018」Minimax
- Ubuntu16.04 使用sudo cat EOF 编辑文件,提示Permission denied错误的解决办法
- Ardino基础教程 2_LED闪烁实验
- 网站CSS样式不起作用,或只有一部分起作用?随手记
- 从集合中查找最值得方法——max(),min(),nlargest(),nsmallest()
- 苏宁 11.11:仓库内多 AGV 协作的全局路径规划算法研究
- 查询作者名长度大于8的 sql语言_从零学会SQL-入门
- springboot2源码2-SpringApplication运行
- 状态管理模式 — Vuex如何使用?
- redis windows切割日志文件_开发者笔记:Windows下搭建简易单机Redis集群测试环境...
- 流氓软件的完全卸载的一些方法
- 一款高颜值的词云包让我拍案叫绝,我爷爷看了都能学会
- 【高项备考】多种类型计算题学习
- Python使用PyAudio制作录音工具
- Nginx 配置 HTTPS 证书
- canvas 画线条
- 机器自动翻译古文拼音 - 十大宋词 - 水调歌头 明月几时有 苏轼
- 安卓禁用硬件加速_开/关大不同 Android4.0 GPU硬件加速实测
热门文章
- 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明)(热身赛)
- 【CCCC】L3-016 二叉搜索树的结构 (30分),,手动建堆(二叉搜索树节点询问),map写法
- NYOJ599 - 奋斗的小蜗牛
- git版本回退(3)
- 高职对计算机课程要求,高职计算机课程对学生编程能力培养.doc
- java 反射创建属性_使用Java反射机制确定基本数据类型属性
- 贪心法——LeetCode Assign Cookies分饼干
- 2014蓝桥杯:地宫取宝(DFS详解)
- istio使用教程和示例(导流,请求路由,访问拒绝,黑白名单,限速)
- Echarts数据可视化event图表事件的相关操作,开发全解+完美注释