参考链接: 使用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简单操作相关推荐

  1. linux redis简单操作

    linux redis简单操作 1.centOS 系统安装redis https://blog.csdn.net/weixin_42835409/article/details/119562074 2 ...

  2. qhfl-5 redis 简单操作

    Redis Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis有以下特点: -- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可 ...

  3. 学JAVA要学redis_新手学习Java对Redis简单操作

    REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵守B ...

  4. java操作redis简单示例

    java操作redis简单示例     初学redis,在java语言和环境下完成redis的入门学习.              首先,官网下载源码,编译,安装,修改配置文件redis.conf中的 ...

  5. NOSQL——redis的安装,配置与简单操作

    内容预知 1.缓存的相关知识 1.1 缓存的概念 1.2 系统缓存 1.3 缓存保存位置及分层结构 DNS缓存 应用层缓存 数据层缓存 硬件缓存 2.关系型数据与非关系型数据库 2.1 关系型数据库 ...

  6. java代码简单操作Redis数据Jedis jar

    java操作Redis数据API->Jedis Jedis引入 作为java码农,如何在代码中操作Redis呢? Jedis的介绍 Redis不仅可以使用命令来操作,现在基本上主流的语言都有AP ...

  7. laravel redis_解析laravel之redis简单模块操作

    入门级操作 普通 set / get 操作: set操作,如果键名存在,则会覆盖原有的值: $redis = app('redis.connection'); $redis->set('libr ...

  8. celery定时任务简单使用

    celery介绍 Celery 是一个强大的分布式任务队列,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务( async task )和定时任务( cr ...

  9. Windows7系统下安装redis的操作教程

    版权声明:本文为博主原创文章,未经博主允许不得转载.    https://blog.csdn.net/matiantian666/article/details/55048282 redis是一个k ...

最新文章

  1. 没有了传感器,工业机器人还能工作吗?
  2. Java byte 踩坑基础
  3. 「PKUWC2018」Minimax
  4. Ubuntu16.04 使用sudo cat EOF 编辑文件,提示Permission denied错误的解决办法
  5. Ardino基础教程 2_LED闪烁实验
  6. 网站CSS样式不起作用,或只有一部分起作用?随手记
  7. 从集合中查找最值得方法——max(),min(),nlargest(),nsmallest()
  8. 苏宁 11.11:仓库内多 AGV 协作的全局路径规划算法研究
  9. 查询作者名长度大于8的 sql语言_从零学会SQL-入门
  10. springboot2源码2-SpringApplication运行
  11. 状态管理模式 — Vuex如何使用?
  12. redis windows切割日志文件_开发者笔记:Windows下搭建简易单机Redis集群测试环境...
  13. 流氓软件的完全卸载的一些方法
  14. 一款高颜值的词云包让我拍案叫绝,我爷爷看了都能学会
  15. 【高项备考】多种类型计算题学习
  16. Python使用PyAudio制作录音工具
  17. Nginx 配置 HTTPS 证书
  18. canvas 画线条
  19. 机器自动翻译古文拼音 - 十大宋词 - 水调歌头 明月几时有 苏轼
  20. 安卓禁用硬件加速_开/关大不同 Android4.0 GPU硬件加速实测

热门文章

  1. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明)(热身赛)
  2. 【CCCC】L3-016 二叉搜索树的结构 (30分),,手动建堆(二叉搜索树节点询问),map写法
  3. NYOJ599 - 奋斗的小蜗牛
  4. git版本回退(3)
  5. 高职对计算机课程要求,高职计算机课程对学生编程能力培养.doc
  6. java 反射创建属性_使用Java反射机制确定基本数据类型属性
  7. 贪心法——LeetCode Assign Cookies分饼干
  8. 2014蓝桥杯:地宫取宝(DFS详解)
  9. istio使用教程和示例(导流,请求路由,访问拒绝,黑白名单,限速)
  10. Echarts数据可视化event图表事件的相关操作,开发全解+完美注释