zoukankan      html  css  js  c++  java
  • 在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 )

     

  • 相关阅读:
    hdu5091(线段树+扫描线)
    hdu2874(tarjan)
    hdu4252
    poj2452(RMQ+二分)
    Dragon Balls HDU
    CF803
    poj1962(带权并查集)
    hdu2818(带权并查集)
    GitHub入门之一:使用github下载项目 .
    (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间
  • 原文地址:https://www.cnblogs.com/xiaohaodeboke/p/12679502.html
Copyright © 2011-2022 走看看