在django中使用(配置)celery

  通俗来说,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 )

 

猜你喜欢

转载自www.cnblogs.com/xiaohaodeboke/p/12679502.html