[django]celery_redis探索

celery+redis能做什么及简单原理

能干嘛: 看这里http://yshblog.com/blog/163

https://segmentfault.com/a/1190000015654877

简单原理
1312420-20180723142556963-1030476737.png

还是不好理解?本人这样理解的:
(任务模块 Task) 产品经理说,我们要做多少功能,这个sprint里面又有多少story. 都在dashbord列出来。
(消息中间件 Broker) 项目经理说,我每个任务都要预估下时间,排入sprint里面。初步指定完成的人。
(任务执行单元 Worker)码农A,拿到task, 就开始编码,实现功能,码农B也是如此。
(任务结果存储 Backend)代码写完后,需要提交存储到github.

env

dj2.x py3

docker run --name myredis -v /etc/localtime:/etc/locatime -v /data:/data -p 6379:6379 -d redis redis-server --appendonly yes
pip3 install  celery==3.1.25
pip3 install  celery-with-redis==3.0
pip3 install  django-celery==3.2.1

测试使用

- 激活app
djcelery

- settings.py
#celery
import djcelery
djcelery.setup_loader()
#配置redis数据库
#redis://:密码@ip:端口/库
BROKER_URL='redis://:sunck@127.0.0.1:6379/0'
#配置任务文件
CELERY_IMPORTS=("myApp.task")
- 项目下celery.py
import os
from celery import Celery
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'whthas_home.settings')

app = Celery('portal')

app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

- 项目下导入
项目中的__init__.py文件中添加from .celery import app as celery_app


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))



- views.py
from myApp.task import longIO
def registe(request):
    longIO.delay()
    return HttpResponse("sunck is a good man")

- 启动redis(我用的docker)

- 启动worker
python manage.py celery worker --loglevel=info

- 启动django

转载于:https://www.cnblogs.com/iiiiiher/p/9354014.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值