15人参与 • 2025-04-23 • Redis
本文用到的各工具版本:
特别注意:
如果你的项目是django框架,那么django-celery,celery-with-redis等等这些东西,都不要用了(这些东西会受python、celery版本的影响,我一直没测通…)。直接pip安装celery 4版本以上,pip安装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 # 启动客户端
# pip install celery # pip install redis
在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']
# celery -a tasks worker --loglevel=info
注意: 上面命令中的tasks是你创建的task所在的python 文件名称。如果你创建的这个tasks.py文件在app文件夹内,那么你要这么执行:
# celery -a app.tasks worker --loglevel=info
注意:每次更改tasks.py文件中的代码后,都要重新执行此命令!
>>> 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
# views.py
from app.tasks import add,sendmail def task_workorder(request, id): """任务添加""" # ......你的代码...... sendmail.delay(dict(to='asd@as.com')) #申请人提交后会给审批人发邮件 # ......你的代码......
注意:如果执行成功,你运行celery -a app.tasks worker –loglevel=info命令的终端会打印一些内容;如果执行失败,报一大把红色代码。。。那么恭喜你!出错了!这种错误,一般都是与你传的参数相关,尤其在django框架下,不要将queryset这种数据查询结果直接传递。
到此这篇关于celery+django+redis异步执行任务的实现示例的文章就介绍到这了,更多相关celery+django+redis异步执行内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论