Django+celery+eventlet+flower+redis异步任务创建及查询实现
1.环境版本:
Django 3.2.12
celery 5.3.4
eventlet 0.33.3
flower 2.0.1
redis 3.5.3
项目名称:new_project
2.celery配置(settings.py)
# celery
# django-celery 配置的部分
# Broker配置,使用Redis作为消息中间件
BROKER_URL = 'redis://127.0.0.1:6379/0' # BACKEND配置,这里使用redis
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0' # 结果序列化方案
CELERY_RESULT_SERIALIZER = 'json' # 任务结果过期时间,秒
CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # 时区配置
CELERY_TIMEZONE = 'Asia/Shanghai' # # 指定导入的任务模块,可以指定多个
# CELERY_IMPORTS = (
# 'new_project.tasks',
# )
3.celery.py配置(settings.py同目录)
import os
import django
from celery import Celery
from django.conf import settings # 设置系统环境变量,安装django,必须设置,否则在启动celery时会报错
# djangoProject1.settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'new_project.settings')
django.setup() celery_app = Celery('new_project')
celery_app.config_from_object('django.conf:settings')
celery_app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) 所有官方配置参考:http://docs.celeryproject.org/en/latest/userguide/configuration.html
4.__init__.py(settings.py同目录)
from .celery import celery_app __all__ = ['celery_app']
5.任务配置(需要异步执行的方法,task.py与settings.py同目录)
说明:示例程序,转换pdf文件为doc,方法必须加上@shared_task装饰器
import random
from pdf2docx import Converter
from celery import shared_task @shared_task
def change_file(file_path):
docx_name = file_path[:-4] + str(random.randint(100000, 999999)) + '.doc'
print("file_path: ", file_path)
print("docx_name: ", docx_name)
# 加载pdf文档
cv = Converter(file_path)
cv.convert(docx_name)
cv.close()
print("file success!")
return 1024
6.启动Django项目
7.启动celery命令:celery -A new_project worker -l debug -P eventlet
8.启动flower命令:celery -A new_project flower,执行后会出现Visit me at http://0.0.0.0:5555,将ip替换为127.0.0.1即可访问
9.任务调用(一般为views.py)
说明:比如页面提交了一份文件,需要后台慢慢去处理的情况,下面在一个方法里面展示了调用任务和查询结果,用sleep模拟等待时间
调用时需要加上.delay方法进行异步处理,使用AsyncResult.get()获取结果,state和get()结果分别是SUCCESS 和1024
def file(request):
file = "E:\\new_project\static\\tc.pdf"
res = change_file.delay(file)
print("res", res) num = 0
while num < 30:
num += 1
ar = result.AsyncResult(str(res))
# print("ar", ar)
if ar.ready():
print(ar.state, ar.get())
else:
print(ar.state)
sleep(2)
return render(request, 'file.html')
Django+celery+eventlet+flower+redis异步任务创建及查询实现的更多相关文章
- django框架下celery+rabbitmq+flower完成异步任务
[转载请注明出处:] http://www.cnblogs.com/yukityan/p/8035787.html 环境: ubuntu16.04 64位 安装: sudo apt-get insta ...
- Django Celery Redis 异步执行任务demo实例
一.windows中安装redis 安装过程见 <在windows x64上部署使用Redis> 二.环境准备 requirements.txt Django==1.10.5 celery ...
- 使用django + celery + redis 异步发送邮件
参考:http://blog.csdn.net/Ricky110/article/details/77205291 环境: centos7 + python3.6.1 + django2.0.1 ...
- Django+Celery+xadmin实现异步任务和定时任务
Django+Celery+xadmin实现异步任务和定时任务 关注公众号"轻松学编程"了解更多. 一.celery介绍 1.简介 [官网]http://www.celerypro ...
- Celery+python+redis异步执行定时任务
我之前的一篇文章中写了[Celery+django+redis异步执行任务] 博文:http://blog.csdn.net/apple9005/article/details/54236212 你会 ...
- django celery异步框架
描述:实现运维平台的异步执行与定时任务,以下简单描述了安装过程及使用. 安装django和celery pip install django pip install celery pip inst ...
- django celery redis 定时任务
0.目的 在开发项目中,经常有一些操作时间比较长(生产环境中超过了nginx的timeout时间),或者是间隔一段时间就要执行的任务. 在这种情况下,使用celery就是一个很好的选择. cele ...
- Django+Celery 执行异步任务和定时任务
celery是一个基于python开发的简单.灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的机器/进程/线程上执行任务调度.采用典型的生产者-消费者模型,主要由三部分组成: 1. 消 ...
- django+celery+redis实现运行定时任务
0.目的 在开发项目中,经常有一些操作时间比较长(生产环境中超过了nginx的timeout时间),或者是间隔一段时间就要执行的任务. 在这种情况下,使用celery就是一个很好的选择. cele ...
- django+celery+redis环境配置
celery是python开发的分布式任务调度模块 Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前,celery支持的消息服务有RabbitMQ,redis甚至是数据库,redis ...
随机推荐
- smarty 拼接字符串
smarty 拼接字符串 newstr = [oldstr]|cat:[appendstr] 1 {$name = "Tom"} 2 {$phone = "1381234 ...
- Linux网络设备命名规则简介
Linux网络设备命名规则简介 几年前, Linux内核为网络接口分配名称采用的是一种简单和直观的方式:一个固定的前缀和一个递增的序号.比如,内核使用eth0名称以标识启动后第一个加载的网络设备,第二 ...
- SQL Server中获取不同格式的日期
select * from 表名 where Convert(varchar(100),日期字段,23)='2008-12-15' Convert函数的应用: Select CONVERT(varch ...
- 浅析华为云Astro的5大关键能力技术
摘要:本文以技术方案视角,对华为云Astro低代码平台的一些核心功能进行简要介绍. 背景介绍 低代码开发基于可视化开发的概念,结合了云原生和多终端体验技术,它可以在大多数业务场景中,帮助企业显著的提升 ...
- 在行情一般的情况下,就说说23级应届生如何找java工作
Java应届生找工作,不能单靠背面试题,更不能在简历中堆砌和找工作关系不大的校园实践经历,而是更要在面试中能证明自己的java相关商业项目经验.其实不少应届生Java求职者不是说没真实Java项目经验 ...
- elasticSearch初步学习反思
转自自己的qq空间 2022年11月29日 每次找到新技术就会发癫 把业务整理完了 看着elasticSearch开始发癫 TM的把所有的一切都塞给它 反正全标记索引要啥拿啥 狠狠地获取就完了 思来想 ...
- Linux 上 KVM 虚拟机网络问题
通过控制台连接虚拟机,ping自己的ip,ping宿主机的ip,ping同网段的ip 1. 自己的ip也不通,先检查网络配置 2. 宿主机的ip不通,就要确认下虚拟机网卡的类型 对于macvlan网卡 ...
- 模型权重保存、加载、冻结(pytorch)
1. 保存整个网络 torch.save(net, PATH) model = torch.load(PATH) 2. 保存网络中的参数(速度快,占空间小) torch.save(net.state_ ...
- 【Leaflet入门篇】 Leaflet快速入门
0 前言 Leaflet 是一个开源并且对移动端友好的交互式地图 JavaScript 库. 它大小仅仅只有 42 KB of JS, 并且拥有绝大部分开发者所需要的所有地图特性 .Leaflet 简 ...
- Blazor前后端框架Known-V1.2.11
V1.2.11 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行. Gitee: https://gitee.com/known/Known Git ...