Celery+django+redis异步执行任务
Celery+django+redis异步执行任务
本文用到的各工具版本:
- celery 4.0.2
- django 1.10.3
- redis 3.2.6
特别注意:
如果你的项目是django框架,那么django-celery,celery-with-redis等等这些东西,都不要用了(这些东西会受python、celery版本的影响,我一直没测通…)。直接pip安装celery 4版本以上,pip安装redis就完全可以的
1.安装redis
二进制文件是编译完成后在src目录下,通过下面的命令启动Redis服务:
$ src/redis-server
你可以使用内置的客户端命令redis-cli进行使用:
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
“bar”
下载,解压,编译:
# wget http://download.redis.io/releases/redis-3.2.6.tar.gz
# tar xzf redis-3.2.6.tar.gz
# cd redis-3.2.6
# make
# src/redis-server # 启动redis服务,看清楚,这是在你的redis-3.2.6目录下执行的
# src/redis-cli # 启动客户端
2.安装celery,redis
# pip install celery
# pip install redis
3.创建一个task
在django app目录中创建tasks.py:
import time
from celery import task@task()
def add(x, y):return x + y@task
def sendmail(mail):print "++++++++++++++++++++++++++++++++++++"print('sending mail to %s...' % mail['to'])time.sleep(2.0)print('mail sent.')print "------------------------------------"return mail['to']
4.开启worker
# celery -A tasks worker --loglevel=info
注意: 上面命令中的tasks是你创建的task所在的python 文件名称。如果你创建的这个tasks.py文件在app文件夹内,那么你要这么执行:
# celery -A app.tasks worker --loglevel=info
注意:每次更改tasks.py文件中的代码后,都要重新执行此命令!
5.试一下
>>> from app.tasks import *
>>> sendmail.delay(dict(to='asd@as.com'))
<AsyncResult: 694b6fa8-a123-4c22-9ba2-b77d7cbb066f>
>>> add.delay(2, 15)
<AsyncResult: 42d34419-4a34-49ab-9627-45428eaaeb38>
>>> a=add.delay(1,1)
>>> a.ready()
True
>>> a.get()
2
>>> a=add.delay(10,5)
>>> a.get()
15
6.实例
# views.py
from app.tasks import add,sendmaildef task_workorder(request, id):"""任务添加"""# ......你的代码......sendmail.delay(dict(to='asd@as.com')) #申请人提交后会给审批人发邮件# ......你的代码......
注意:如果执行成功,你运行celery -A app.tasks worker –loglevel=info命令的终端会打印一些内容;如果执行失败,报一大把红色代码。。。那么恭喜你!出错了!这种错误,一般都是与你传的参数相关,尤其在django框架下,不要将queryset这种数据查询结果直接传递。
Celery+django+redis异步执行任务相关推荐
- django python3 异步_详解配置Django的Celery异步之路踩坑
人生苦短,我用python. 看到这句话的时候,感觉可能确实是很深得人心,不过每每想学学,就又止步,年纪大了,感觉学什么东西都很慢,很难,精神啊注意力啊思维啊都跟不上.今天奶牛来分享自己今天踩的一个坑 ...
- Django+redis+celery实现异步任务
1 Django中的异步请求 Django Web中从一个http请求发起,到获得响应返回html页面的流程大致如下:http请求发起 -- http handling(request解析) -- u ...
- celery 可视化_在Flask中使用Celery进行多任务分布执行
关键字:Flask, Redis, RabbitMQ, Celery, Broker, Backend 前言 在后端服务器有时候需要处理耗时较长的任务,例如发送电子邮件,在处理这些任务时,这个线程就处 ...
- Celery+Rabbitmq实现异步任务
Celery+Rabbitmq实现异步任务 一. 安装celery,再安装rabbitmq或redis pip install celery rabbitmq和redis安装其中一个就可以了,cele ...
- PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...
源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...
- 【spring】spring异步执行的使用与源码分析
在实际的开发过程中,有些业务逻辑使用异步的方式处理更为合理.比如在某个业务逻辑中,需要把一些数据存入到redis缓存中,这个操作只是一个辅助的功能,成功或者失败对主业务并不会产生根本影响,这个过程可以 ...
- PHP连接redis并执行redis相关命令的方法详解
PHP连接redis并执行redis相关命令的方法详解 连接redis库的方法 共性的运算归类 redis服务类函数 set 操作增删改查 List栈的结构,注意表头表尾,创建更新分开操作 Set,没 ...
- 通过Python利用ADSL服务器和tinyproxy构建数据自己的动态代理IP池,用django+redis做web服务,提供IP接口
应公司业务需求需要在一些地方使用代理,要求连通率高,速度快,最主要的还要便宜,对比多家供应商后,最后还是决定自购拨号服务搭建代理IP池. 需要配置:1.一台或多台adsl服务器(用以提供IP,可网上购 ...
- Springboot 指定重发的次数和延迟时间,定时异步执行 重发任务
以前写过一篇基于Springboot使用retry框架进行实现重试业务场景的文章: https://blog.csdn.net/qq_35387940/article/details/99676114 ...
最新文章
- 2022-2028年中国工业4.0深度调研及投资前景预测报告(全卷)
- python创建图片对应的csv格式_Python:如何从csv文件创建图形节点和边?
- mybatis的#和$的差别
- VSCode 初次写vue项目并一键生成.vue模版
- 闭包 —JavaScript面向对象高级
- 米家扫地机器人充满电需要多长时间_米家扫地机器人充满电后能工作多久?
- 数学:乘法逆元-拓展GCD
- python中数据类型不同运算不同_Python的基本数据类型与运算
- UVA 11452 Dancing the Cheeky-Cheeky
- [POJ1830] 开关问题
- 微服务Eureka使用详解
- Matlab 函数文件简介
- 爱快做无线打印服务器,听说爱快路由器也支持NAS了?
- Proxy的常见使用——正向代理的使用及配置总结
- linux上运行gfortran,linux – gfortran:在64位系统中编译32位可执行文件
- 华为产品总监谈投身互联网:要避免与腾讯竞争
- 哈夫曼树实现文件的压缩与解压缩
- 看牛人如何学习JAVA-如何学习java
- cad把图形切成两部分_CAD入门教程,最常用快捷键
- 长治计算机专业,长治计算机专业好就业吗?,计算机专业
热门文章
- 性能测试:手机IOS性能测试
- 亿级流量电商JVM调优(转图灵学院)
- 双u服务器装win7系统安装,u深度一键u盘装原版win7 安装系统详细使用教程
- 第二章 Silicon labs EFR32 MG21 验证蓝牙的私有Characteristic的读/写
- html设置页面宽度高度,a4纸宽度_A4纸网页打印 html网页页面的宽度设置成多少 _a4纸宽度高度...
- rabbitmq User can only log in via localhost
- 漫画:骚操作系列(必须掌握的疯子找座问题)
- ES6中import * as xxx from 'xxx'的作用
- GuzzleHttp使用
- 达梦数据库逻辑备份(dexp/dimp)