通俗来说,celery是python的一个异步队列服务器。在我们日常web应用中,当请求一个后端接口的时候,都是等待该接口的业务完成后再返回。那么如果这个接口执行的任务很漫长,就可能造成服务阻塞甚至http请求超时。那么如果web接口要执行很长时间的任务,又要保证即时给前端响应,就可以将很耗时间的任务交付给异步队列服务器,该任务会在异步队列中自动执行完成。(一般来说不需要立即给用户返回的接口都可以放到异步队列服务器中)
Celery for djanjo的安装方式:
pip install celery
pip install django-celery
pip install celery-with-redis
pip install redis==2.10.6
Celery在django中的配置
在settings中进行如下配置:
import djcelery
djcelery.setup_loader()
在INSTALLED_APPS中加上 [
'djcelery'
]
BROKER_URL = 'redis://localhost:6379/2'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_IMPORTS = ('app.tasks.task')
Celery方法定义:
在指定位置创建py,如在应用app下创建task.task.py
import time
from celery import task
@task
def sayhello():
print('ready......')
time.sleep(2)
print(111)
Celery 异步函数在视图中的使用
from app.tasks.task import sayhello
class Index(View):
TEMPLATE = 'index.html'
def get(self,request):
sayhello.delay()
return render(request,self.TEMPLATE)
Celery 与 python服务启动方法
首次配置完成后执行sql同步方法
python manage.py makemigrations
python manage.py migrate
启动服务:
先执行 python manage.py runserver
再执行python3 manage.py celery worker -c 4 --loglevel=info
( Ps确保你的电脑已经安装了redis并且启动了redis-server )