在web开发中,要给用户发送邮件,发送短信,都属于耗时的操作,会导致给用户的响应时间变长,这种情况的解决办法,给用户先返回一个响应,不要影响用户的使用,将这些耗时的操作,放在后台执行,例如新开一个进程,celery就是解决这个问题
worker 工人
执行任务的单元
broker 消息中间件 即中间人
用来在服务和woker中传递消息
redis RabbitMQ 两种类型数据库
backend 用来存储消息以及celery执行结果
Django封装了celery 叫django-celery
pip install django-celery
pip install django-redis
pip install redis==2.10.6
redis-cli.exe ## 连接服务
shutdown ## 关闭服务
和之前的开发相比,django-celery只是将任务发布出去,处理耗时操作发送邮件,发送短信 ,爬虫,使用异步任务去实现,使得主进程不会阻塞,web服务只负责发起任务和接受任务的结果,中间执行的过程交给异步任务处理。
启动worker
python manage.py celery worker --loglevel=info
在写好tasks.py和views实例化后启动worker后有
python manage.py celerybeat --loglevel=info
启动之前,确保redis,worker启动,再去启动定时任务