celery+redis能做什么及简单原理
能干嘛: 看这里http://yshblog.com/blog/163
https://segmentfault.com/a/1190000015654877
还是不好理解?本人这样理解的:(任务模块 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.25pip3 install celery-with-redis==3.0pip3 install django-celery==3.2.1
测试使用
- 激活appdjcelery- settings.py#celeryimport djcelerydjcelery.setup_loader()#配置redis数据库#redis://:密码@ip:端口/库BROKER_URL='redis://:sunck@127.0.0.1:6379/0'#配置任务文件CELERY_IMPORTS=("myApp.task")
- 项目下celery.pyimport osfrom celery import Celeryfrom django.conf import settingsos.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.pyfrom myApp.task import longIOdef registe(request): longIO.delay() return HttpResponse("sunck is a good man")- 启动redis(我用的docker)- 启动workerpython manage.py celery worker --loglevel=info- 启动django